如标题所示,我有一些代码调用
我正在使用.Net Core 3.1。
我需要进行模拟。根据这个问题 "C# Mock IHttpclient & CreateClient",以下内容应该有效...
IHttpClientFactory.CreateClient()
来创建一个HttpClient实例。我正在使用.Net Core 3.1。
我需要进行模拟。根据这个问题 "C# Mock IHttpclient & CreateClient",以下内容应该有效...
[Test]
public void Mytest() {
var httpClientFactory = new Mock<IHttpClientFactory>(MockBehavior.Strict);
httpMessageHandler = new Mock<HttpMessageHandler>(MockBehavior.Strict);
httpMessageHandler.Protected()
// Setup the PROTECTED method to mock
.Setup<Task<HttpResponseMessage>>(
"SendAsync",
ItExpr.IsAny<HttpRequestMessage>(),
ItExpr.IsAny<CancellationToken>()
)
// prepare the expected response of the mocked http call
.ReturnsAsync(new HttpResponseMessage()
{
StatusCode = HttpStatusCode.BadRequest,
})
.Verifiable();
var httpClient = new HttpClient(httpMessageHandler.Object);
httpClientFactory.Setup(_ => _.CreateClient()) // This fails
.Returns(httpClient).Verifiable();
systemUnderTest = new MyService(httpClientFactory.Object);
var result = systemUnderTest.MyMethod()
// Assert Stuff
}
然而,当我运行它时,报告如下...
System.NotSupportedException: 不支持的表达式:_ => _.CreateClient()。不可在设置/验证表达式中使用扩展方法(此处为HttpClientFactoryExtensions.CreateClient)。
很明显我做错了什么,但我看不出来是什么。
有人能提供一些指针吗?