1

応答を作成するためのコンストラクターHttpResponseMessage<T>とコンテンツがなくなったら、コントローラーをテストしたい場合はどうすればよいでしょうか? Request.CreateResponse<T>代わりに使用する必要があり、それは次のようなものです:

public HttpResponseMessage Post()
{
    // Do Something
    var response = Request.CreateResponse<SomeType>(System.Net.HttpStatusCode.OK, someObject);
    return response;
}

このようなコントローラーをテストするには、Requestオブジェクトをスタブする必要があります。これは、基本クラスのプロパティであり、それを使用して応答を作成する必要があるためです。

4

2 に答える 2

0

を返さない場合HttpResponseMessage、WebApi は を呼び出しMediaTypeFormatterて結果を応答ストリームに書き込みます (つまり、 を使用してMediaTypeFormatterを作成HttpResponseMessageします)。デフォルトの実装の多くは、上記と同様のことを行います。最も簡単な解決策は、関数から戻りSomeType、組み込みのMediaTypeFormatters の 1 つを使用して変換を行うことです。両方のソリューションを個別にテストすることも、一緒にテストすることもできます。

于 2012-08-16T10:56:41.917 に答える
0

私の経験から、HttpResponseMessage を変更する必要がない場合は、ApiController で使用しないようにしてください。これにより、コードが簡単になります。

public SomeType Post()
{
     // Do Something
     return someObject;
}

避けられない場合の答えは次のとおりです。

Request.CreateResponse を使用した ASP.NET WebApi 単体テスト

于 2012-08-15T16:25:08.013 に答える