[英]How to build an HttpResponseHeaders for the FakeItEasy
我正在使用 C#,我需要測試接受 System.Net.Http.Headers.HttpRequestHeaders 作為參數的方法之一。 我們正在使用 FakeItEasy 進行測試。
但似乎 HttpResponseHeaders - 沒有構造函數(並且它是密封的),它使用 HttpHeader 作為基礎。 HttpHeader - 具有構造函數,但 Header 屬性僅允許獲取。
有沒有辦法構建虛擬/假 HttpResponseHeaders 或 HttpResponseMessage 並在其中預設所需的 Header 值?
FakeItEasy 不能偽造一個密封的 class , 也不能創建一個沒有可訪問構造函數的 Dummy ,但你可以試試這個:
var message = new HttpResponseMessage();
var headers = message.Headers;
headers.Add("HeaderKey", "HeaderValue");
僅僅因為Headers
是 get-only 並不意味着您不能改變列表。
我使用反射創建了一個HttpResponseHeaders
object:
static HttpResponseHeaders CreateHttpResponseHeaders()
{
var myType = typeof(HttpResponseHeaders);
var types = Array.Empty<Type>();
var constructorInfoObject =
myType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, types, null);
return (HttpResponseHeaders) constructorInfoObject.Invoke(null);
}
使用@Blair提供的解決方案對我的 Sendgrid 方法進行單元測試。
var fakeResponse = new System.Net.Http.HttpResponseMessage();
var fakeResponseHeader = fakeResponse.Headers;
fakeResponseHeader.Add("X-Message-Id", "123xyz");
var response = new SendGrid.Response(System.Net.HttpStatusCode.Accepted, null, fakeResponseHeader);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.