我正在尝试运行一个单元测试Redux action.test.js使用jest和反应测试库。
/src/存储/动作/index.js
import actionTypes from '../ActionTypes';
export const setLoader = (value, errorMessage = '') => ({
type: actionTypes.SET_LOADER,
status: value,
errorMessage,
});
/src/存储/ActionsTypes.js
const actionTypes = {
SET_LOADER: 'SET_LOADER'
};
export default actionTypes;
在测试文件中,以下是我测试的一部分:
import * as actions from '../index';
describe('ACTIONS', () => {
it('should create an actions with correct type', () => {
expect(actions.setLoader()).toEqual({ type: 'SET_LOADER' });
})
})
我得到了这个错误:expect(received).toEqual(expected)//深度相等
● ACTIONS › should create an actions with correct type
expect(received).toEqual(expected) // deep equality
- Expected - 0
+ Received + 2
Object {
+ "errorMessage": "",
+ "status": undefined,
"type": "SET_LOADER",
}
对代码的任何更正都将非常有帮助,谢谢!
新更新当我像下面提到的那样设置errorMessage
时:
expect(actions.setLoader()).toEqual({ type: 'SET_LOADER', errorMessage: 'message'});
我得到了一个更奇怪的错误:
- Expected - 1
+ Received + 2
Object {
- "errorMessage": "message",
+ "errorMessage": "",
+ "status": undefined,
"type": "SET_LOADER",
}
您的setLoader
操作将errorMessage
属性设置为""
,status
属性设置为undefined
;但是,您的断言没有考虑到这些属性。您可以将这些属性添加到toEqual
中被比较的对象中,或者您可以验证type
属性是否为"SET_LOADER"
—这完全取决于您。