使用 mocha/chai 进行基本 React/redux 测试

Basic React/redux testing with mocha/chai

我是 react/redux 世界的新手,我使用 this code 创建了 redux todo 应用程序,现在我想为其编写测试,我创建了以下规范:

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

尝试打印对象,它们(expectedStatenextState)都有相同的数据:

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

为什么失败了?

equal() from Chai's expect interface is a strict equality check. It sounds like you want 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);