我有一个自定义的React钩子,可以进行异步api调用并返回响应。 实现如下:
const {
response,
call,
loading,
} = useAsyncRequest({
args: [collection, uid, schema],
callFn: apiGetDocument,
});
然后我可以像下面这样开玩笑地轻松模拟该组件:
AsyncRequestManager
.mockReturnValue(defaultAsyncHookReturnLoad)
如果我仅使用这些钩子中的一个,但是如果我使用了多个钩子(即1个用于加载,1个用于保存),则此方法有效,那么我必须分别模拟两个响应,如下所示:
AsyncRequestManager
.mockReturnValueOnce(defaultAsyncHookReturnLoad)
.mockReturnValueOnce(defaultAsyncHookReturnSave);
这适用于相同的渲染,但不适用于后续的渲染。
是否可以告诉玩笑按顺序返回一个值?
即类似以下内容(由于作用域变量而无法正常工作)
let i = 0;
AsyncRequestManager.mockImplementation(() => {
i += 1;
if (i % 3 === 0) return defaultAsyncHookReturnLoad;
if (i % 3 === 1) return defaultAsyncHookReturnSave;
if (i % 3 === 2) return defaultAsyncHookReturnDelete
// i += 1;
});
编辑:由于亚当的评论,上述解决方案似乎行之有效。哇!