Wie man die test-web-API-JSON-response?
Ich versuche, setup-unit-tests für meine web API. Ich habe gehackt zusammen, einige test-code aus bits und Stücke, die ich gefunden habe im web. Ich habe so weit wie das senden der test-Anfrage ab und erhält eine Antwort, aber ich bin fest auf der Prüfung der Antwort.
So, hier ist, was ich habe, so weit. Dies ist mit dem xunit-test-Paket, aber ich glaube nicht, dass die Dinge für das, was ich versuche zu erreichen.
(Entschuldigung für die Brei-code)
[Fact]
public void CreateOrderTest()
{
string baseAddress = "http://dummyname/";
//Server
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute("Default", "api/{controller}/{action}/{id}",
new { id = RouteParameter.Optional });
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
HttpServer server = new HttpServer(config);
//Client
HttpMessageInvoker messageInvoker = new HttpMessageInvoker(new InMemoryHttpContentSerializationHandler(server));
//Order to be created
MotorInspectionAPI.Controllers.AccountController.AuthenticateRequest requestOrder = new MotorInspectionAPI.Controllers.AccountController.AuthenticateRequest() {
Username = "Test",
Password = "password"
};
HttpRequestMessage request = new HttpRequestMessage();
request.Content = new ObjectContent<MotorInspectionAPI.Controllers.AccountController.AuthenticateRequest>(requestOrder, new JsonMediaTypeFormatter());
request.RequestUri = new Uri(baseAddress + "api/Account/Authenticate");
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Method = HttpMethod.Get;
CancellationTokenSource cts = new CancellationTokenSource();
using (HttpResponseMessage response = messageInvoker.SendAsync(request, cts.Token).Result)
{
Assert.NotNull(response.Content);
Assert.NotNull(response.Content.Headers.ContentType);
//How do I test that I received the correct response?
}
Ich hoffe, ich kann überprüfen Sie die Antwort als string, etwas entlang der Linien von
response == "{\"Status\":0,\"SessionKey\":"1234",\"UserType\":0,\"Message\":\"Successfully authenticated.\"}"
Wo ist InMemoryHttpContentSerializationhandler definiert? Ich würde das gerne machen fast genau das, was Sie tun.
Never mind, BIYF. Obwohl es war ein fairer Weg nach unten die Liste der Treffer blogs.msdn.com/b/kiranchalla/archive/2012/05/06/...
Never mind, BIYF. Obwohl es war ein fairer Weg nach unten die Liste der Treffer blogs.msdn.com/b/kiranchalla/archive/2012/05/06/...
InformationsquelleAutor Ally | 2014-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie bekommen Sie Ihre Antwort als string:
Jedoch json-format kann variieren, und ich Wette, Sie wollen nicht, um zu testen, - also ich empfehle, mit Newtonsoft.Json oder eine ähnliche Bibliothek, parse den string zu json-object und test-json-Objekt-Eigenschaften verwenden. Das gehe
InformationsquelleAutor Ondrej Svejdar
Als pro dieser blog, fügen Sie einen Assemblyverweis in der AssemblyInfo.cs von Ihrem web-Projekt:
Anschließend können Sie testen, wie Sie erwarten würden, um mit einem normalen Objekt, außer Sie können kein Ersatz für "var" für die "dynamic" - Typ:
Brauchte vier Stunden, um zu finden, dass kleine Juwel.
InformationsquelleAutor Chaim Eliyah