2016-05-04 2 views
0

Я новичок реагировать/Redux мира, я создал приложение перевождите Todo с помощью this code, сейчас я хотел бы писать тесты для него, я создаю следующие спецификации:Basic React/Redux тестирования с мокко/Chai

import {expect} from 'chai' 
import todoApp from '../src/reducers' 
import {setVisibilityFilter} from '../src/actions' 

describe('reducer',()=> { 
    it('Set correctly visibility filter',()=>{ 
     const setVisibilityFilterAction = setVisibilityFilter('SHOW_ALL') 
     const initialState={}; 
     const nextState= todoApp(initialState, setVisibilityFilterAction) 
     const expectedState ={ 
       todos:[], 
       visibilityFilter:'SHOW_ALL' 
      } 
     expect(nextState).to.equal(expectedState); 
    }) 
}) 

Однако утверждение пошел сбой и ошибка:

AssertionError: expected { Object (todos, visibilityFilter) } to equal { Object (todos, visibilityFilter) } 
     + expected - actual 

Пробовал печатать объект, и они (expectedState и nextState) оба имеют те же данные:

{ 
    todos:[], 
    visibilityFilter: "SHOW_ALL" 
} 

Почему это произошло неудачно?

+0

Привет, отдельный вопрос: как вам удается проверить код es6? Вы запустили его в узле? Вы используете babel? – Boyang

+0

да, я использую babel. вам понадобится транспилер для es6 (по крайней мере пока) – Kossel

ответ

2

equal() от Chai's expect Интерфейс является строгой проверкой равенства. Похоже, вы хотите eql() или .deep.equal().

// Equivalent to nextState === expectedState 
expect(nextState).to.equal(expectedState); 

// Instead: 
expect(nextState).to.eql(expectedState); 

// Or: 
expect(nextState).to.deep.equal(expectedState); 
+0

он работал с eql(), однако, почему тестирование с http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial .html использует equals и работает? это имеет какое-то отношение к immutable.js? – Kossel

+0

Не знаю, может быть. Эти примеры с '.equal (List.of (' на самом деле не смотрят на меня так, как будто бы они работали, но я не запускал его. (В общем, много кода в блогах/учебниках имеет ошибки.) В любом случай, ответ на ваш вопрос заключается в том, что вы не можете использовать только 'equal()'. – JMM

Смежные вопросы