【发布时间】:2021-04-08 13:17:03
【问题描述】:
我正在尝试模拟 var response = await httpClient.SendAsync(request, CancellationToken.None);,但我的 response.Content 始终是 null。
我的模拟看起来像......
var httpResponseMessage = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
httpResponseMessage.Content = new StringContent("test content", System.Text.Encoding.UTF8, "application/json");
A.CallTo(() => httpClient.SendAsync(A.Fake<HttpRequestMessage>(), CancellationToken.None)).Returns(Task.FromResult(httpResponseMessage));
它似乎被正确地模拟了,但 response.Content 为空,但状态代码 - 例如 - 反映了我在测试中设置的内容。
我相信你们当中有人遇到过这个问题,我们将不胜感激。谢谢。
【问题讨论】:
-
因为这不是有效的
HttpResponseMessage。如果没有其他东西,它也会丢失一些标题。为什么不创建一个模拟DelegatingHandler类?恕我直言,这是最简单的方法 -
那里有一个非常好的库,专门用于简化对 HttpClient 的模拟。它叫做 WireMock,你应该试一试。 github.com/WireMock-Net/WireMock.Net
标签: c# mocking fakeiteasy httpcontent