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/...

InformationsquelleAutor Ally | 2014-02-04

Schreibe einen Kommentar