在单元测试TestInitialize中调用Web API

时间:2013-06-03 10:22:38

标签: unit-testing asp.net-web-api

我试图为WebAPI和EF编写UnitTest

我试图添加数据在den TestInitialize中执行数据库,但它没有用。当我在控制台应用程序中执行相同的命令时,它可以工作。 在调用webapi进行测试时有不同之处吗?

 [TestInitialize]
 public void CreateEntityObjects()
 {
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:60609/");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    Department dep1 = new Department() { Id = Guid.NewGuid(), Name = "IT" };
    client.PostAsJsonAsync("api/Department", dep1);
 }

编辑: 所以我仍然只是初始化没有清理(稍后)。如果数据库中有一些数据,我会手动查看。但没有数据,没有错误,没有。

1 个答案:

答案 0 :(得分:0)

您可以尝试查看请求的结果属性:

var response = client.PostAsJsonAsync("api/Department", dep1).Result;

然后看一下服务器返回的内容:

string responseContent = response.Result.Content.ReadAsStringAsync().Result;

现在分析responseContent变量以查看您可能从服务器获得的错误消息。此外,您可能希望在向其发送HTTP请求之前在单元测试中self-host your Web API,否则您的API可能甚至无法启动。