我可以对toHaveBeenCalledWith使用自定义匹配器吗?

问题描述

我需要检查传递给方法的URL。我为此编写了一个自定义匹配器,但是我不知道如何在toHaveBeenCalledWith中使用它。

在这种情况下如何使用自定义匹配器?

例如在C#Moq中,我可以执行以下操作以仅匹配偶数:

mock.Setup(foo => foo.Add(It.Is<int>(i => i % 2 == 0))).Returns(true);

解决方法

也许没有您想要的优雅,但是您应该能够将自定义匹配器应用于yourMockFunction.mock.calls[0][0]

expect(customMatcher(mockFunction.mock.calls[0][0])).toEqual(true)

如果有多个参数,则可以阅读mockFunction.mock.calls[0]中的下一个元素。如果要检查多个呼叫,它们将在mockFunction.mock.calls[1]mockFunction.mock.calls[2]等中可用。