如何调试在内存服务器上运行的POST请求?

时间:2013-09-20 15:37:22

标签: c# asp.net asp.net-mvc asp.net-web-api

所以我正在尝试使用内存Http Server测试我的API,正如此博客文章所建议的那样:http://blogs.msdn.com/b/youssefm/archive/2013/01/28/writing-tests-for-an-asp-net-webapi-service.aspx

我的代码如下所示:

[TestMethod]
    public void AddNewCustomer()
    {
        config = new HttpConfiguration();
        WebApiConfig.Register(config);
        HttpServer server = new HttpServer(config);
        using (HttpMessageInvoker client = new HttpMessageInvoker(server))
        {
            using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Customer"))

            {
                request.Content = new StringContent(@"{ ""Email"" : ""me@you.com"", ""Password"" : ""password"" }");
                request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                using (HttpResponseMessage response = client.SendAsync(request, CancellationToken.None).Result)
                {
                    Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
                }
            }
        };
    }

我已经尝试过测试实际的API,当我发布一个客户它正确响应时,它会起作用。当我尝试用它测试时,response.StatusCode是'内部服务器错误'。

这令人恼火,但更令人困惑的是,我发现自己无法调试实际出错的地方 - 我不知道为什么在这种情况下会出现这个错误,我不能坚持使用断点来测试发生了什么

编辑:我的回复正是:

        "{\"Message\":\"An error has occurred.\"}"

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在新的HttpConfiguration()

之后添加以下内容
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;