提问者:小点点

开玩笑测试,在第一次调用时调用实际实现,模仿其余部分


我们要把一个回购从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);

共1个答案

匿名用户

你为什么不能这样做呢?

const spy = jest.spyOn(instance, 'function');
spy
  .mockImplementationOnce(() => instance.function())
  .mockImplementation((args) => args);