我正在尝试将React / Redux应用程序迁移到Immutable.JS
,并且对测试有疑问。
给出一个执行如下操作的减速器:
export default (state = initialState, action) => {
switch (action.type) {
case RUN_ENDED:
return state.set('isRunning', false)
.set('roundResult', action.data)
default:
return state
}
我想测试两个属性的设置是否正确。
我以前的测试看起来像这样:
it('should handle the RUN_ENDED action', () => {
const action = {
type: RUN_ENDED,
data: {
winnerId: 0
}
}
const result = simulatorReducer(undefined, action)
expect(result).to.deep.equal({
isRunning: false,
roundResult: action.data
})
})
使用不可变,我似乎无法以完全相同的方式进行这些比较。我可以用result
来显式检查result.get('theProperty')
中的每个值,但是如果我有5-6个值,这似乎有点费力。
是否有某种方法可以使用Immutable做到这一点?
答案 0 :(得分:1)
您可以使用https://www.npmjs.com/package/jest-immutable-matchers
例如:
expect(result).toEqualImmutable(Immutable.Map({isRunning: false, ...}));