[英]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.