复赛/减速器-编写测试用例时出错



我正在尝试使用React测试库为reducers.js编写单元测试用例。我遇到了一些无法解决的错误。有人能帮我理解我哪里出了问题吗?

reducers.js-

const INITIAL_STATE = {
userData: {},
};
const setUserData = (state, { key, value }) => ({ // {key: value}
...state,
userData: {
...state.userData,
[key]: value,
},
});

reducers.test.js

import reducersDefault from './reducers';
const {
setUserData,
} = reducersDefault.reducers;
describe('reducers', () => {
it('setUserData', () => expect(setUserData({}, { key: { name: 'test' } })).toEqual({
userData: { userData: { key: { name: 'test' } } },
}));
});

有了上面的代码,我得到了下面的错误-

Expected value to equal:
{"userData": {"userData": {"key": {"name": "test"}}}}
Received:
{"userData": {"undefined": undefined}}

试图弄清楚我在这里做错了什么。非常感谢您的帮助。

测试失败是因为函数无法正常工作。您不能将对象析构函数为键/值-您当前正在执行的操作将提取传递到那里的对象的keyvalue属性的值。

这里有一个更好的方法:

const setUserData = (state, data) => ({
...state,
userData: {
...state.userData,
..data, // put every property inside data to userData
},
});

LE:在阅读了你的评论后,我意识到你在测试中错误地调用了你的函数:

expect(setUserData({}, { key: 'name', value: 'test' })).toEqual({
userData: { name: 'test' }
}));

这应该如您所期望的那样工作(不更改setUserData(。

相关内容

最新更新