javascript - 用玩笑模拟多个反应自定义钩子
问题描述
我有一个自定义的 React 钩子,可以进行异步 api 调用并返回响应。实现如下:
const {
response,
call,
loading,
} = useAsyncRequest({
args: [collection, uid, schema],
callFn: apiGetDocument,
});
然后我可以用下面的玩笑轻松地模拟这个组件:
AsyncRequestManager
.mockReturnValue(defaultAsyncHookReturnLoad)
如果我只使用其中一个钩子,但如果我使用多个(即 1 个用于加载,1 个用于保存),那么我必须分别模拟两个响应,如下所示:
AsyncRequestManager
.mockReturnValueOnce(defaultAsyncHookReturnLoad)
.mockReturnValueOnce(defaultAsyncHookReturnSave);
它适用于相同的渲染,但不适用于后续的重新渲染。
是否可以告诉 jest 按顺序返回一个值?
即类似于下面的内容(由于作用域变量而不起作用)
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;
});
编辑:感谢亚当的评论,上述解决方案似乎有效。欢呼!
解决方案
推荐阅读
- python - 如何将值映射到python中的模糊项
- html - 使用 css 悬停时停止图标抖动
- ios - 无法从其他类设置 UITextfield 的文本
- python - python gevent LoopExit:'此操作将永远阻塞'
- javascript - 在 Microsoft Edge 中停止 SetInterval
- java - 在 Oracle DB 中唯一标识源 JDBC 进程
- python - python-gitlab 创建子模块
- excel - IF 公式仅在 A1=A2、B1=B2 时返回值
- oop - 传递一个对象来设置一个私有字段被认为是紧密耦合的吗?
- bash - 使用 sed 将字符串拆分为固定大小的片段