簡體   English   中英

模擬 HttpClient.SendAsync 以返回內容不是 null 的響應

[英]Mock HttpClient.SendAsync to return response with Content not null

我正在嘗試模擬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 是 null 但狀態代碼 - 例如 - 反映了我在測試中設置的內容。

我相信你們中的一個人已經遇到過這個問題,所有的幫助將不勝感激。 謝謝。

SendAsync的調用可能不匹配。 我看到你配置了你的假貨來回應

A.CallTo(() => httpClient.SendAsync(A.Fake<HttpRequestMessage>(), CancellationToken.None))

但是,您的生產代碼不太可能傳遞與您在此處的A.Fake<HttpRequestMessage>()參數比較相等的第一個參數。

你的意思是

A.CallTo(() => httpClient.SendAsync(A<HttpRequestMessage>.Ignored, CancellationToken.None))

(或等效A<HttpRequestMessage>._ )?

您可以在參數約束頁面上閱讀有關 arguments 如何匹配的信息。 具體來說,請參閱忽略 arguments子主題中的任何參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM