我正在使用Jest + Enzyme。 我有一个功能
submitHandler = values => {
return new Promise((resolve, _) => {
saveSomething({values, resolve});
}
}
我的测试:
it('Should call saveSomething on form submit', () => {
const values = {firstName: 'FName', lastname: 'LName'};
const {enzymeWrapper, props} = setup();
enzymeWrapper.find('Formik').simulate('submit', values);
expect(props.saveSomething).toBeCalledWith({
values: {
...values,
contactLanguage: LOCALE_TO_LANGUAGE_MAP[props.locale],
},
});
});
当前,我的测试失败。 错误:
Error: expect(jest.fn()).toBeCalledWith(...expected)
- Expected
+ Received
@@ -1,6 +1,7 @@
Object {
+ "resolve": [Function anonymous],
"values": Object {
"contactLanguage": "FRENCH",
"firstName": "FName",
"lastname": "LName",
},,
问题:如何模拟解析功能?
答案 0 :(得分:0)
开玩笑的嘲笑有一种固有的方法来应对Promise的决议和拒绝。有关详细信息,请参阅Jest Mock API。
mockResolvedValue
方法用于此目的。
只需通过简单调用jest.fn()
来模拟您的SubmitHandler并添加mockResolvedValue
方法即可。
您也可以使用mockRejectValue
方法测试拒绝。