我们正在将一个 repo 从 sinon 存根转移到 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);