69

ASP.Net MVC 4 RC の ApiController を使用しており、GET メソッドの単体テストを試みています。

このメソッドは にあるCreateResponse<T>メソッドを使用していますHttpRequestMessageが、これをモックする方法や正しく機能させる方法がわかりません。

メソッドの本体には次のものが含まれます。

MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType);
var response = Request.CreateResponse<SmartBlock>(
    HttpStatusCode.OK, versionedSmartBlock, header);

単体テスト内で、空の を作成しますHttpRequestMessage

CallsController api = new CallsController(
    managerMock.Object, config, adapterFactoryMock.Object);
api.Request = new HttpRequestMessage(
    HttpMethod.Get, "http://localhost/Initiate?ern=%2B44123456789");    
var response = api.Get("+44123456789", null);

しかし、それは単に生成しInvalidOperationExceptionます:

要求に関連付けられた構成オブジェクトがないか、指定された構成が null でした。

HttpRequestMessageメソッドが実際に機能するように構成する方法について、誰かが何かポインタを持ってCreateResponseいますか?

4

2 に答える 2

159

これは、空の構成を指定することで解決されました。

request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

その答えはここから得た

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

于 2012-06-15T16:57:05.420 に答える