Rematch/Reducers- 编写测试用例时出错
Rematch/Reducers- Error writing the test cases
我正在尝试使用 React 测试为我的 reducers.js 编写单元测试用例 Library.I 我遇到了一些我无法弄清楚的错误。有人可以帮助我了解我哪里出错了吗?
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}}
试图找出我在这里做错了什么。非常感谢任何帮助。
您测试失败,因为您的函数无法正常工作。您不能将对象解构为 key/value - 您当前正在做的是提取您传递到那里的对象的 key
和 value
属性的值。
这里有一个更好的方法:
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)。
我正在尝试使用 React 测试为我的 reducers.js 编写单元测试用例 Library.I 我遇到了一些我无法弄清楚的错误。有人可以帮助我了解我哪里出错了吗?
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}}
试图找出我在这里做错了什么。非常感谢任何帮助。
您测试失败,因为您的函数无法正常工作。您不能将对象解构为 key/value - 您当前正在做的是提取您传递到那里的对象的 key
和 value
属性的值。
这里有一个更好的方法:
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)。