我正在尝试在组件内部测试一个仅在API请求成功时调用的函数。对于上下文,当您单击按钮时,我将此函数称为:
return onUpdate(params, setError, success, cancel);
并在成功时调用成功函数:
const success = (data) => {
// do some stuff when successful
};
该onUpdate
函数将被导入,并且是如下所示的API请求:
const onUpdate = (params, onError, onSuccess, onCancel) => {
save(params)
.then((data) => {
if (onSuccess) {
onSuccess(data.data);
}
})
.catch((error) => {
if (axios.isCancel(error)) {
if (onCancel) {
onCancel();
}
} else {
onError(error);
}
});
};
我一直在测试中嘲笑此功能的实现,如下所示:
jest.mock('../../dataAccess', () => ({
onUpdate: jest
.fn()
.mockImplementation(
(params, onError, onSuccess) =>
new Promise((resolve) => resolve(onSuccess(response))),
),
}));
通过阅读docs / stack溢出,它看起来像是在一个示例问题中传递了回调,并且如果我添加其他参数并添加cb
为最后一个参数,它似乎仍然无法激发我的成功功能。
我需要模拟什么才能获得测试以在组件中调用成功函数?我敢肯定这是很小的东西,但不太确定是什么。
当您将new Promise
其函数从基于回调的函数基本返回到异步函数时,请尝试执行类似以下操作:
jest.mock('../../dataAccess', () => ({
onUpdate: jest
.fn()
.mockImplementation(
(params, onError, onSuccess) => {
onSuccess(response)
}
),
}));
甚至更简单:
jest.mock('../../dataAccess', () => ({
onUpdate: (params, onError, onSuccess) => {
onSuccess(response)
}
}));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句