ASP.Net MVC 4 RCのApiControllerを使用しており、GETメソッドの単体テストを試みています。
このメソッドはHttpRequestMessage
にあるCreateResponse<T>
メソッドを使用しますが、これをモックする方法や正しく機能させる方法がわかりません。
メソッドの本体には次のものが含まれます。
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
を生成します:
要求に構成オブジェクトが関連付けられていないか、提供された構成がヌルでした。
HttpRequestMessage
メソッドが実際に仕事をするようにCreateResponse
を構成する方法についてのポインタを持っている人はいますか?
これは、空の構成を指定することで解決しました。
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
私はここからその答えを得ました
VBここで!
上記のリンクからの応答をハイブリッドにして、これを次のように簡単に機能させることができました。
Dim request As HttpRequestMessage = New HttpRequestMessage()
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration)
誰かに役立つ場合にだけ投稿してください。