如果我有一个模拟函数说myMockFunction
我知道我可以检查它的调用:
const firstCall = myMockFunction.mock.calls[0];
有最简单/干净的方式来接听最近的电话吗?
我认为以下内容可行:
const mostRecentCall = myMockFunction.mock.calls[myMockFunction.mock.calls.length -1];
这看起来相当hacky /无聊,有更清洁/更简单的方法吗?
答案 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数组