Moq httpclient 第二次返回空字符串
Moq httpclient returning empty string the second time
我目前的代码如下:
var fieldBoundary = Properties.Resources.TestFieldBoundary;
httpClient.Setup(
x =>
x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
.Returns(
Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
}));
第一次使用这个模拟 http 客户端时,我得到了我期望的响应。但是,当我第二次使用相同的模拟对象调用相同的 URL 时,我得到了成功的响应,但响应是一个空字符串或零长度字节数组。关于最小起订量如何不同的想法?
更改 Returms
以使用函数。
httpClient
.Setup(x => x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
.Returns(() => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) {
Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
})
);
它会在您每次调用模拟方法时调用该函数,而不是在重复调用时返回相同的实例。这就是为什么当您第二次调用时,字符串内容流指针已经结束。
我目前的代码如下:
var fieldBoundary = Properties.Resources.TestFieldBoundary;
httpClient.Setup(
x =>
x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
.Returns(
Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
}));
第一次使用这个模拟 http 客户端时,我得到了我期望的响应。但是,当我第二次使用相同的模拟对象调用相同的 URL 时,我得到了成功的响应,但响应是一个空字符串或零长度字节数组。关于最小起订量如何不同的想法?
更改 Returms
以使用函数。
httpClient
.Setup(x => x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
.Returns(() => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) {
Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
})
);
它会在您每次调用模拟方法时调用该函数,而不是在重复调用时返回相同的实例。这就是为什么当您第二次调用时,字符串内容流指针已经结束。