我们正在将一个 repo 从 sinon stub 转移到 jest,我在这个模拟中遇到了麻烦。我想做的是在第一次调用时调用实际的实现,然后模拟其余的调用。这个函数是递归的,所以我们希望第一次调用调用实际的实现,然后模拟递归调用。
在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);
最佳答案
要使用模拟库执行此操作,请使用 jest.requireActual()
.复制 the guide 中的示例:
jest.mock('node-fetch');
const fetch = jest.requireActual('node-fetch');
这允许您模拟 fetch
正在测试的代码中的库,但使用真正的 fetch
在您的测试本身中起作用。
关于javascript - 开 Jest 测试,在第一次调用时调用实际实现,模拟其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64771617/