2012-06-15 7 views
67

Estoy usando el ApiController de ASP.Net MVC 4 RC y estoy intentando probar un método Get.Cómo simular el método de extensión CreateResponse <T> en HttpRequestMessage

Este método utiliza el método CreateResponse que está en la HttpRequestMessage, pero no tengo idea de cómo se burlan de esto o para que funcione correctamente.

El cuerpo del método contiene esto:

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

Dentro de mi prueba de unidad, que crean un HttpRequestMessage vacío:

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

Pero simplemente genera una InvalidOperationException:

La solicitud no hace tener un objeto de configuración asociado o la configuración proporcionada era nula.

¿alguien tiene alguna sugerencias sobre cómo puedo configurar el HttpRequestMessage por lo que el método CreateResponse realmente hace su trabajo?

+1

Esto parece que se está abordando el mismo problema: http://stackoverflow.com/questions/10868673/asp-net-webapi-unit-testing-with-request-createresponse –

Respuesta

0

WebAPI 1 con VB aquí!

que lograron respuestas híbridos de su enlace de arriba para conseguir que esto funcione tan simple como esto:

Dim request As HttpRequestMessage = New HttpRequestMessage() 
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration) 

simple publicación en caso de que ayuda a nadie.

Cuestiones relacionadas