怎么能在笑话中获得对模拟函数的最新调用?

lin*_*dan 4 javascript mocking jestjs

如果我有一个模拟功能,说myMockFunction我知道可以检查它的调用,如下所示:

const firstCall = myMockFunction.mock.calls[0];
Run Code Online (Sandbox Code Playgroud)

有没有一种简便的方法来获取最近的电话?

我认为以下方法会起作用:

const mostRecentCall = myMockFunction.mock.calls[myMockFunction.mock.calls.length -1];
Run Code Online (Sandbox Code Playgroud)

这似乎很笨拙/麻烦,有没有一种更清洁/更简便的方法?

ale*_*ero 10

https://jestjs.io/docs/mock-functions#custom-matchers

expect(myMockFunction).lastCalledWith()


kri*_*aps 6

如果调用是一个数组,并且您不希望保留其内容,则myMockFunction.mock.calls.pop()可以获取最后一个调用。

  • 这是一个糟糕的答案,因为它对调用本身产生副作用 (3认同)

Phi*_*ipp 6

jest v27.5.0开始,有一个新属性lastCall

const mostRecentCall = myMockFunction.mock.lastCall;
Run Code Online (Sandbox Code Playgroud)