如何模拟HttpRequestMessage上的CreateResponse <T>扩展方法
我正在使用ASP.Net MVC 4 RC的ApiController,我试图unit testing一个Get方法。
这个方法使用HttpRequestMessage上的CreateResponse方法,但我不知道如何模拟这个或使其正常工作。
该方法的主体包含这个:
MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType); var response = Request.CreateResponse<SmartBlock>(HttpStatusCode.OK, versionedSmartBlock, header);
在我的unit testing中,我创build了一个空的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:
该请求没有关联的configuration对象,或者提供的configuration为空。
有没有人有任何关于如何configurationHttpRequestMessage,以便CreateResponse方法实际上它的工作的指针?
这是通过指定一个空的configuration来解决的:
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
我从这里得到了答案
ASP.NET WebApiunit testing与Request.CreateResponse
WebAPI 1与VB在这里!
我设法混合来自上面的链接的响应,以使其工作如此简单:
Dim request As HttpRequestMessage = New HttpRequestMessage() Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration)
只是张贴,以防万一它帮助任何人。