2013-06-03 55 views
0

我尝试写一个单元测试的的WebAPI和EF在单元测试TestInitialize调用的WebAPI

我试着添加数据做书房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); 
} 

编辑: 所以我还是只是做初始化没有清理(后)。如果数据库中有一些数据,我正在手动查找。但没有数据,没有错误,什么都没有。

+0

“但它没有工作”可能是整个可见宇宙中最糟糕的问题描述。这是什么意思? –

+0

我是新来UnitTesting,只是想看看我可以添加数据到我的数据库在TestInitialize。但它没有工作,我没有在数据库中的数据,没有错误,没有任何 –

回答

0

你可以尝试去请求的结果性质:

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

,然后看看什么是服务器返回:

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

现在分析responseContent变量,看看有什么可能的错误您可能从服务器获得的消息。在向它发送HTTP请求之前,你可能还希望在单元测试中使用self-host your Web API,否则你的API甚至可能不会启动。

+0

有没有办法在单元测试中输出该字符串? –

+0

当然,您可以使用['TestContext.WriteLine'](http://msdn.microsoft.com/zh-CN/library/microsoft.visualstudio.testtools.unittesting.testcontext%28v=vs.110%29.aspx ) 方法。或者简单地在该行上放置一个断点,然后在调试模式下运行测试,这将允许您检查responseContent变量的值。 –

+0

哦,坦克你,我做到了,他说创造......我认为问题是错过了。结果?当我再次打电话给他时。结果他没有创建数据,当我打电话给他。结果他做到了。谢谢,修正 –