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

时间:2016-08-26 14:14:20

标签: c# unit-testing moq

我正在尝试编写一个单元测试,我需要设置一个受保护的方法。我正在使用Moq进行此设置。

ItExpr.IsNull<TValue>

执行此行时,会抛出以下异常:

  

System.ArgumentException:使用It.IsAny<TValue>而不是a   null参数值,因为它阻止正确的方法查找。

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

使用ctrl + F5设置受保护的方法需要做什么?

1 个答案:

答案 0 :(得分:30)

设置IProtectedMock时,您应使用Moq.Protected.ItExpr代替Moq.It

以下是我在问题中尝试做的更正实施:

_innerHandler.Protected()
             .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
             .ReturnsAsync(responseMessage);