我正在尝试编写一个单元测试,我需要设置一个受保护的方法。我正在使用Moq进行此设置。
ItExpr.IsNull<TValue>
执行此行时,会抛出以下异常:
System.ArgumentException:使用
It.IsAny<TValue>
而不是a null参数值,因为它阻止正确的方法查找。
当我将其更改为使用throw
时,它确实允许执行测试。但是,它当然缺少我想配置的设置。
使用ctrl + F5
设置受保护的方法需要做什么?
答案 0 :(得分:30)
设置IProtectedMock
时,您应使用Moq.Protected.ItExpr
代替Moq.It
。
以下是我在问题中尝试做的更正实施:
_innerHandler.Protected()
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
.ReturnsAsync(responseMessage);