使用 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
尝试打印对象,它们(expectedState
和 nextState
)都有相同的数据:
{
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);
我是 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
尝试打印对象,它们(expectedState
和 nextState
)都有相同的数据:
{
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);