javascript - 模拟多个呼叫
问题描述
我正在使用 ts-mock-imports 并且我想模拟一个函数调用的多个返回值,然后检查一个函数是否被调用了给定的次数。以下作品:
const getUserSpy = dataServiceMock.mock('getUserFromDB')
.returns({...USER_1})
.returns({...USER_2});
在我的测试用例中,我有两个对 getUserFromDB() 的调用,在上述情况下,getUserSpy.callCount 等于 2。但这取决于顺序,所以我宁愿能够执行以下操作:
const getUser1Spy = dataServiceMock.mock('getUserFromDB')
.withArgs(USER_1_ID).returns({...USER_1});
const getUser2Spy = dataServiceMock.mock('getUserFromDB')
.withArgs(USER_2_ID).returns({...USER_2});
我期望的是 getUser1Spy 被调用一次,而 getUser2Spy 被调用一次。但是,看起来第二次调用 withArgs() 删除了先前的模拟实例。
解决方案
这有效:
const getUserSpy = dataServiceMock.mock('getUserFromDB');
getUserSpy.withArgs(USER_1_ID).returns({...USER_1});
getUserSpy.withArgs(USER_2_ID).returns({...USER_2});
// ... then ...
assert(getUserSpy.callCount).equals(2);
推荐阅读
- python - 使用诗歌为车轮指定 Python 标记
- jquery - 控制器中的参数在 asp.net mvc 中给出空值异常
- xml - 如何以任何顺序拥有多个元素?
- android - Android位图无法解释的内存使用情况
- python - Python循环温度
- java - 在recyclerview的嵌套recyclerview中的嵌套列表中添加项目
- javascript - 尝试导入错误:“react-table”不包含默认导出(导入为“ReactTable”)
- haskell - Megaparsec:嵌套缩进块吃太多
- amazon-sagemaker - 为什么我觉得 AWS SageMaker GPU 没有更快?
- python - 如何使用 cv2.face 和 cv2 使用 QT 创建窗口而不会出错?