Могу ли я использовать пользовательский сопоставитель с toHaveBeenCalledWith?

#reactjs #jestjs #matcher

#reactjs #jestjs #сопоставитель

Вопрос:

Мне нужно проверить URL-адрес, который был передан методу. Я написал пользовательский сопоставитель для этого, но я не знаю, как его использовать toHaveBeenCalledWith .

Как я могу использовать свой пользовательский сопоставитель в этой ситуации?

Например, в C # Moq я могу сделать следующее, чтобы сопоставлять только четные числа:

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

Ответ №1:

Может быть, не так элегантно, как то, что вы ищете, но вы должны иметь возможность применить свой пользовательский сопоставитель 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] и так далее.