我们要把一个回购从sinon存根转移到jest,而我在这个模拟中遇到了麻烦。我要做的是在第一次调用时调用实际实现,然后模拟其余的调用。这个函数是递归的,所以我们希望第一个调用调用实际实现,然后模拟递归调用。
在西农,是这样做的
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);
你为什么不能这样做呢?
const spy = jest.spyOn(instance, 'function');
spy
.mockImplementationOnce(() => instance.function())
.mockImplementation((args) => args);