如何在jest中获取模拟函数的最新调用?

时间:2017-07-18 21:18:36

标签: javascript mocking jestjs

如果我有一个模拟函数说myMockFunction我知道我可以检查它的调用:

const firstCall = myMockFunction.mock.calls[0];

有最简单/干净的方式来接听最近的电话吗?

我认为以下内容可行:

const mostRecentCall = myMockFunction.mock.calls[myMockFunction.mock.calls.length -1];

这看起来相当hacky /无聊,有更清洁/更简单的方法吗?

3 个答案:

答案 0 :(得分:3)

如果调用是一个数组,而您不想保留其内容,则可以myMockFunction.mock.calls.pop()进行最后一次调用。

答案 1 :(得分:1)

您应该能够通过向后切片来访问最后一个元素: myMockFunction.mock.calls.slice(-1)[0]

当然,如果您还没有任何电话,您将得到undefined。根据您的测试,可能不是问题。

答案 2 :(得分:0)

如笑话文档所述, https://jestjs.io/docs/en/mock-functions

// The last call to the mock function was called with the specified args expect(mockFunc.mock.calls[mockFunc.mock.calls.length - 1]).toEqual([ arg1, arg2, ]);

使用pop会更改mock.calls数组