Используйте ItExpr.IsNull <TValue>, а не значение нулевого аргумента, поскольку это предотвращает правильный поиск метода
Я пытаюсь написать unit test, где мне нужно настроить защищенный метод. Я использую Moq для этой настройки.
_innerHandler.Protected()
.Setup<Task<HttpResponseMessage>>("SendAsync", It.IsAny<HttpRequestMessage>(), It.IsAny<CancellationToken>())
.ReturnsAsync(responseMessage);
Когда эта строка выполняется, она выдает следующее исключение:
System.ArgumentException: используйте ItExpr.IsNull<TValue>
, а не значение null аргумента, поскольку оно предотвращает правильный поиск метода.
Когда я меняю его на использование ItExpr.IsNull<TValue>
, он позволяет выполнить тест. Тем не менее, это, конечно, отсутствует настройка, которую я хотел настроить.
Что мне нужно сделать, чтобы настроить защищенный метод с помощью It.IsAny<TValue>
?
Ответы
Ответ 1
При настройке IProtectedMock
вы должны использовать Moq.Protected.ItExpr
вместо Moq.It
.
Вот исправленная реализация того, что я пытался сделать в моем вопросе:
_innerHandler.Protected()
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
.ReturnsAsync(responseMessage);