testing - 测试使用 Immutable.js 更改多个属性的 reducer
问题描述
我正在尝试将 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
})
})
对于 Immutable,我似乎无法以完全相同的方式进行这些比较。我可以明确地检查每个值result
,result.get('theProperty')
但如果我有 5-6 个值,这似乎有点费力。
有什么方法可以用 Immutable 做到这一点吗?
解决方案
你可以使用https://www.npmjs.com/package/jest-immutable-matchers
例如:
expect(result).toEqualImmutable(Immutable.Map({isRunning: false, ...}));
推荐阅读
- java - thrift 客户端调用服务器,客户端可以成功接收结果,但是服务出现异常
- python - 将 PyTorch 张量的所有元素相乘
- javascript - Primeng MessageService实例化空白页
- oop - 使用装饰器设计模式覆盖内部方法
- go - client-go 中的 golang 语法
- c# - 如何在Excel中将24小时转换为12小时
- php - 带有授权标头的 Guzzle POST 请求不起作用
- jquery - 使用资源 Fullcalendar 计算每天的事件
- node.js - CORS cookie 不是由浏览器设置的,cookie 存在于响应中
- python - 有没有逐行读取pdf文件的方法?