C# 使用ItExpr.IsNull<;TValue>;而不是空参数值,因为它会阻止正确的方法查找

C# 使用ItExpr.IsNull<;TValue>;而不是空参数值,因为它会阻止正确的方法查找,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在尝试编写一个单元测试,需要在其中设置一个受保护的方法。我正在使用最小起订量进行此设置 _innerHandler.Protected() .Setup<Task<HttpResponseMessage>>("SendAsync", It.IsAny<HttpRequestMessage>(), It.IsAny<CancellationToken>()) .ReturnsAsync(resp

我正在尝试编写一个单元测试,需要在其中设置一个受保护的方法。我正在使用最小起订量进行此设置

_innerHandler.Protected()
             .Setup<Task<HttpResponseMessage>>("SendAsync", It.IsAny<HttpRequestMessage>(), It.IsAny<CancellationToken>())
             .ReturnsAsync(responseMessage);
\u innerHandler.Protected()
.Setup(“sendsync”、It.IsAny()、It.IsAny())
.ReturnsAsync(响应消息);
执行此行时,将引发以下异常:

System.ArgumentException:使用
ItExpr.IsNull
而不是 null参数值,因为它阻止正确的方法查找

当我将其更改为使用
ItExpr.IsNull
时,它确实允许执行测试。但是,它当然缺少我想要配置的设置


使用
It.IsAny
设置受保护的方法需要做什么?

设置
IProtectedMock
时,应该使用
Moq.protected.ItExpr
而不是
Moq.It

以下是我在问题中试图做的正确实现:

_innerHandler.Protected()
             .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
             .ReturnsAsync(responseMessage);
\u innerHandler.Protected()
.Setup(“sendsync”、ItExpr.IsAny()、ItExpr.IsAny())
.ReturnsAsync(响应消息);