69 votes

Comment se moquer de la CreateResponse <T> méthode d'extension sur HttpRequestMessage

Je suis à l'aide d'ASP.Net MVC 4 RC ApiController et je suis en train de test de l'unité d'une méthode Get.

Cette méthode utilise la CreateResponse méthode qui est sur le HttpRequestMessage, mais je n'ai aucune idée de la façon de se moquer de ce ou de le faire fonctionner correctement.

La méthode du corps contient ceci:

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

Au sein de mon unité de test, j'ai créer un vide 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);

Mais il génère une exception InvalidOperationException:

La demande n'est pas associée à un objet de configuration ou que cette configuration était nulle.

Quiconque a tous les pointeurs sur comment je peux configurer le HttpRequestMessage de sorte que le CreateResponse méthode réellement fait son travail?

159voto

tomasmcguinness Points 3728

Cela a été résolu par la spécification d'un vide de configuration:

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

J'ai eu la réponse à partir d'ici

ASP.NET WebApi tests unitaires avec la Demande.CreateResponse

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X