0

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);
4

1 に答える 1