本文介绍了使用 mocha/chai 进行基本的 React/redux 测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是 react/redux 世界的新手,我使用 this 创建了 redux todo 应用程序代码,现在我想为它编写测试,我创建了以下规范:
I'm new to react/redux world, I created the redux todo app using this code, Now I wanted to write tests for it, I create following spec:
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);
})
})
但是断言失败了,错误是:
However the assertion went fail and the error is:
AssertionError: expected { Object (todos, visibilityFilter) } to equal { Object (todos, visibilityFilter) }
+ expected - actual
尝试打印对象并且它们(expectedState
和 nextState
)都具有相同的数据:
Tried to print the object and they(expectedState
and nextState
) both have the same data:
{
todos:[],
visibilityFilter: "SHOW_ALL"
}
为什么会失败?
推荐答案
equal()expect
接口的/code> 是一个严格的相等性检查.听起来您想要 eql()
或 .deep.equal()
.
equal()
from Chai's expect
interface is a strict equality check. It sounds like you want eql()
or .deep.equal()
.
// Equivalent to nextState === expectedState
expect(nextState).to.equal(expectedState);
// Instead:
expect(nextState).to.eql(expectedState);
// Or:
expect(nextState).to.deep.equal(expectedState);
这篇关于使用 mocha/chai 进行基本的 React/redux 测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!