我有以下方法來創建一個帶有模擬回應的 Http 客戶端:
public static HttpClient GetMockedHttpClient(string responseContent, HttpStatusCode httpStatusCode)
{
var handlerMock = new Mock<HttpMessageHandler>(MockBehavior.Strict);
handlerMock
.Protected()
.Setup<Task<HttpResponseMessage>>(
"SendAsync",
ItExpr.IsAny<HttpRequestMessage>(),
ItExpr.IsAny<CancellationToken>()
)
.ReturnsAsync(new HttpResponseMessage()
{
StatusCode = httpStatusCode,
Content = new StringContent(responseContent),
})
.Verifiable();
return new HttpClient(handlerMock.Object);
}
如何使回應依賴于特定的 url,以便設定僅在使用給定地址呼叫 HttpClient 時生效?
uj5u.com熱心網友回復:
您需要更改的是以下行:
ItExpr.IsAny<HttpRequestMessage>(),
IsAny<HttpRequestMessage>() 意味著模擬將捕獲該型別的任何屬性,如果您希望它捕獲您使用的特定 uri Is<HttpRequestMessage>()
ItExpr.Is<HttpRequestMessage>(m => m.RequestUri == [your uri goes here]),
uj5u.com熱心網友回復:
我建議使用https://github.com/justeat/httpclient-interception。我不得不運行類似的測驗并且它完成了作業,盡管我用它來模擬整個客戶端。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324860.html
