2013-06-03 88 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

哦,坦克你,我做到了,他說創造......我認爲問題是錯過了。結果?當我再次打電話給他時。結果他沒有創建數據,當我打電話給他。結果他做到了。謝謝,修正 –