WebAPI を学習して理解しようとする試みの中で、APIController メソッドからの戻り値が HttpResponseMessage にラップされることを学習したと思います。
新しい HttpResponseMessage を作成し、その中に入れるオプションもありますList<Product>
。
たとえば、ヘッダーのテストに興味があり、次のコードで受け入れヘッダーを渡す場合、応答で返されるコンテンツ タイプをテストしたいと考えています。
私はいつでも HttpResponseMessage を返すことができることを知っています。厳密にはそれが何をしているのかですが、ここに示すように HttpServer/HttpConfiguration セットアップを作成することなく、コントローラーメソッドからの応答を HttpResponseMessage としてキャストする方法があるかどうか疑問に思っていました。
var config = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/products");
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var route = config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}"
);
var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "GetData" } });
var controller = new GetDataController();
controller.ControllerContext = new HttpControllerContext(config, routeData, request);
controller.Request = request;
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
/************************* HELP!!!***************/
// If Get returns List<Product> can I cast it as HttpResponseMessage??
/************************************************/
var result = controller.Get();
// Assert
Assert.Equal("application/json", result.Content.Headers.ContentType.MediaType);