【发布时间】:2021-06-16 03:04:52
【问题描述】:
我们正在将一个 repo 从 sinon stubs 转移到 jest,我在使用这个 mock 时遇到了问题。我想做的是在第一次调用时调用实际的实现,然后模拟其余的调用。这个函数是递归的,所以我们希望第一次调用调用实际的实现,然后模拟递归调用。
在sinon里面是这样子的
const stub = sandbox.stub(instance, 'function');
stub
.onFirstCall()
.callsFake(stub.wrappedMethod)
.callsFake((args) => args);
我想做这样的事情,但在 jest spy 或 mock 实例上找不到实际的实现。这根本不可能吗?
const spy = jest.spyOn(instance, 'function');
spy
.mockImplementationOnce(spy.mock.actual) // ???
.mockImplementation((args) => args);
【问题讨论】:
-
您能否提供一些上下文 - 为什么第一个电话应该通过?
-
函数是递归的,所以我们想测试一下递归调用的调用次数。
-
为什么?它的递归不是实现细节吗?来电者在乎吗?
-
我想这可能是一个糟糕的测试,但我现在的目标是让事情顺利进行。
-
迁移不是摆脱不良测试而不是花时间迁移它们的理想时机吗?
标签: javascript node.js jestjs