我正在尝试为redux减速机进行单元测试。但是,我正在努力获得相同的预期和平等的结果。
const initState = {};
export default function (state = initState, action) {
const newState = { ...state };
switch (action.type) {
case CREATE_TYPE:
return {
...state,
[action.customType.id]: {
...action.customType
}
};
default:
return state;
}
}
我的测试。似乎customType: { id: 'test-id' }
describe('reducer', () => {
it('should return the initial state', () => {
const state = reducer(undefined, { type: 'unknown' });
expect(state).toEqual({});
});
it('should handle CREATE_TYPE', () => {
expect(reducer({ test: true }, {
type: CREATE_TYPE,
customType: { id: 'test-id' },
id: 'test-id'
})).toEqual({
'test-id': 'test-type',
'test': true
});
});
});
答案 0 :(得分:2)
通常有助于拼出一切。
通过这种方式,您可以清楚地了解您的预期结果。
import moment from 'moment';
然后更容易确切地看到问题所在。
答案 1 :(得分:1)
你正在从减速器中退出:
{
...state,
[action.customType.id]: {
...action.customType
}
如果你发送
{
type: CREATE_TYPE,
customType: { id: 'test-id' },
id: 'test-id'
}
将等同于:
{
...state,
'test-id' : { id: 'test-id' }
}
你正在评估它等于
{
...state,
'test-id': 'test-type'
}
我不知道您期望通过减速机格式化您的状态 - 但现在您的减速机设置方式将无法提供您期望的状态。我不知道你在期待什么,因为我没有看到节点或价值'测试类型'您提供的代码中的任何其他位置看起来你可能只有一些语法错误?