2015-04-15 51 views
2

我是Web API的新手。我用C#編寫的單元測試繼承了代碼。但是,當我運行單元測試時,無論控制器名稱如何,測試都會通過。例如:http://localhost/api/users - >即使用戶拼寫錯誤,單元測試也會通過。Web API單元測試未按預期工作

我在控制器下面的代碼:

public async Task TestGetUsers() 
{ 
    usersController controller = new usersController(new TestUserRepository()); 
    ApiControllerConfig.SetupControllerForTest(controller, "http://localhost/api/users", HttpMethod.Get); 
    IHttpActionResult result = controller.Get(); 
    HttpResponseMessage message = await result.ExecuteAsync(CancellationToken.None); 
    string content = await message.Content.ReadAsStringAsync(); 
    Assert.IsTrue(content.Length > 0); 
} 

不知道這信息足以告訴我問題出在哪裏,但請讓我知道如果有更多的信息需要發佈。

+0

你使用什麼單元測試框架? – jklemmack

回答

-1

您可以直接在測試項目中使用apicontroller,只需添加參考並進行測試即可。

事情是這樣的:

public void TestMethod() 
    { 
     var ctr = new MyApiController(); 
     string name = ctr.GetName(); 
     Assert.IsTrue(name == "xpto"); 
    } 
+0

感謝Coastpear作出迴應。這是使它工作的唯一方法嗎? – gvii

0

您正在閱讀從沒有發現404請求的內容,那也仍然有內容(告訴你的內容不能被找到)。因此斷言內容長度超過0是沒有意義的,因爲它不區分失敗和通過測試。

你應該做的是看狀態碼(message.StatusCode)並確保它是HttpStatusCode.Ok

我也建議只需將Web Api項目添加爲您的單元測試項目的參考 - 這樣您就可以直接調用方法,而不必經過HttpClient。欲瞭解更多(包括測試你的路線),請看my blog