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(响应消息);