2013-10-17 24 views
1

我們正在努力在我們的API調用中設置自動化單元測試。我們的解決方案中有兩個項目。一個是ASP.net WebAPI項目,另一個是Microsoft Test項目。使用WebAPI.Testing框架的ASP.net WebAPI

無可否認,我們是自動化單元測試的新手,但理解了基本概念。似乎有幾個用於測試ASP.net WebAPI項目的開源工具和框架。我們目前正在與WebAPI.Testing框架合作。除了自述之外,它基本上沒有文檔。根據自述文件,使用該工具非常簡單直接,但它不適合我們。

下面是我們的測試方法:

[TestMethod] 
public void TestMethod1() 
{ 
    var config = new HttpConfiguration(); 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

    Browser browser = new Browser(config); 

    var response = browser.Get("/api/activities/", (with) => 
    { 
     with.Header(SessionIdHeaderKeyName, "e999e767-5b63-4cc0-b2be-34842eb3adf0"); 
     with.Header("Accept", "application/json"); 
     with.HttpRequest(); 
    }); 

    Assert.Equals(HttpStatusCode.OK, response.StatusCode); 
} 

我們選擇了這個框架,因爲它使我們能夠調用請求之前設置頭。代碼執行正常,沒有例外,但是我們得到的是404 Not Found,無論我們在路徑(/ api/activities)中指定。老實說,我不明白這可以怎麼工作,因爲似乎沒有任何參考我的WebAPI項目。那麼測試框架怎麼可能知道什麼路徑「/ api /活動」解決什麼,甚至哪裏可以找到相應的控制器。

有沒有人有任何這方面的經驗或其他框架,這將測試我們的ASP.net WebAPI控制器,並允許我們在請求之前設置標題?

有人可以告訴我我可能在這裏做錯了嗎?

我通過電子郵件發送了WebAPI.Testing框架的作者,他很友善地回覆並告訴我需要包含對我的API項目的引用(「您的測試項目需要引用您的API項目,然後希望它會找到路線。「)。然而,簡單地在我的WebAPI項目中添加對我的測試項目的引用並沒有幫助。如果其他人有任何建議,我將不勝感激他們。

我在我的測試項目中包含了對我的WebAPI項目的引用。我還更新了代碼以包含HttpConfiguration安裝程序。我已驗證路線路徑和控制器操作是否正確。但是,當我運行我的測試時,我仍然收到404。我不明白該代碼如何知道在哪裏找到控制器並將其連接起來。

回答

0

我覺得有一些反映回事發現該班的WebAPI ...

包括您的WebAPI項目的引用。

然後確保測試項目使用的東西從項目的WebAPI - 那些的WebAPI的加載到內存...

例如私人Application.Web.Controllers.ServiceController tp = null;