2016-06-06 10 views
0

Ich arbeite durch das Tutorial here und feststellen, dass ziemlich alle, aber die ersten grundlegenden Chai-Tests für mich scheitern. Hier ist das aktuelle Beispiel für eine versagende TestChai/Mocha unveränderliche Tests konsistent versagt

import {List, Map} from 'immutable'; 
import {expect} from 'chai'; 

import {setEntries} from '../src/core'; 

describe('application logic',() => { 
    describe('setEntries',() => { 
     it('adds the entries to the state',() => { 
      const state = Map(); 
      const entries = List.of('Trainspotting', '28 Days Later'); 
      const nextState = setEntries(state, entries); 
      expect(nextState).to.equal(Map({ 
       entries: List.of('Trainspotting', '28 Days Later') 
      })); 
     }); 
    }); 
}); 

und hier ist der Code-Tests gegen:

import {List} from 'immutable'; 

export function setEntries(state, entries){ 
    return state.set('entries', entries); 
} 

hier wird die Fehlermeldung für den Fehler:

1) application logic setEntries adds the entries to the state: 

     AssertionError: expected { Object (size, _root, ...) } to equal { Object (size, _root, ...) } 
     + expected - actual 

       "size": 2 
       } 
      ] 
      ] 
     - "ownerID": [undefined] 
     + "ownerID": {} 
     } 
     "size": 1 
     } 

ich kann‘ Es scheint keine sinnvolle Dokumentation darüber zu geben, was dieser Fehler bedeutet, und andere Benutzer dieses Tutorials sehen keine ähnlichen Probleme. Irgendeine Idee, wo das erstickt?

Antwort

2

Sie können keine regulären Gleichheitsprüfungen für Immutable-Objekte verwenden. Verwenden Sie stattdessen so etwas wie Immutable.is():

import Immutable, {List, Map} from 'immutable'; 

... 

expect(
    Immutable.is(nextState, Map({ 
    entries: List.of('Trainspotting', '28 Days Later') 
    })) 
).to.be.true; 

Oder noch besser, verwenden chai-immutable:

import chai, {expect} from 'chai'; 
import chaiImmutable from 'chai-immutable'; 

chai.use(chaiImmutable); 

Mit letzterem Ihr Testfall kann die gleiche bleiben.

0

Sie müssen die folgenden Codes beginnend mit Ihrer Datei hinzufügen.

import chai from 'chai'; 
import chaiImmutable from 'chai-immutable'; 

chai.use(chaiImmutable);