J'utilise ApiController d'ASP.Net MVC 4 RC et j'essaie de tester une méthode GET.
Cette méthode utilise le CreateResponse<T>
méthode qui se trouve sur le HttpRequestMessage
, mais je n'ai aucune idée de comment se moquer de cela ou de le faire fonctionner correctement.
Le corps de la méthode contient ceci:
MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType);
var response = Request.CreateResponse<SmartBlock>(
HttpStatusCode.OK, versionedSmartBlock, header);
Dans mon test unitaire, je crée un HttpRequestMessage
vide:
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 juste un InvalidOperationException
:
La demande n'a pas d'objet de configuration associé ou la configuration fournie était nulle.
Quelqu'un at-il des conseils sur la façon de configurer la HttpRequestMessage
pour que la méthode CreateResponse
fasse réellement son travail?
Cela a été résolu en spécifiant une configuration vide:
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
J'ai la réponse à ça d'ici
WebAPI 1 avec VB ici!
J'ai réussi à hybrider les réponses de votre lien ci-dessus pour que cela fonctionne aussi simplement que cela:
Dim request As HttpRequestMessage = New HttpRequestMessage()
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration)
Il suffit de poster au cas où cela aiderait quelqu'un.