我可以将自定义匹配器与 toHaveBeenCalledWith 一起使用吗?

Can I use custom matcher with 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] 等中可用。