簡體   English   中英

單元測試asp.net路由映射擴展方法

[英]Unit test asp.net route mapping extension method

我有一個Routes的擴展類。 我想測試更新的routecollection列表。 這是一個摘錄:

public static void MapMyRoutes(this RouteCollection routes)
{
    //do some stuff
    routes.MapHttpRoute(null, controllerPath.Path, new { @namespace = controllerPath.Namespace, controller = controllerPath.ControllerName, id = UrlParameter.Optional });
}

我想對此擴展進行單元測試,但無法解決如何從routecollection中提取映射的url:

這是一個測驗:

[TestMethod]
public void TestMapMyRoutesMapsCorrectly()
{
    var routes = new RouteCollection();
    routes.MapMyRoutes();

    foreach (var route in routes)
    {
        Assert.AreEqual(route.??, "v1/api/myRoute");
    }
}

RoutesCollection被定義為Collection<RouteBase>因此將每個項目轉換為Route,即:

foreach (var route in routes.Cast<Route>())
{
    // Url may not in fact be the correct property …
    Assert.AreEqual(route.Url, "v1/api/myRoute");
}

說實話,你正在用錯誤的邏輯來測試void方法。 由於您的方法是無效的,您應該使用模擬框架並在MapMyRoutes(this RouteCollection routes)方法中傳遞模擬的RouteCollection對象,然后驗證routes.MapHttpRoute方法調用。

請參閱此鏈接以獲取代碼實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM