
測試代碼
1 [TestMethod]
2 public void TestMvcApplicationRoute()
3 {
4 RouteCollection routes = new RouteCollection();
5 MvcApplication.RegisterRoutes(routes);
6 var httpContextMock = new Mock
7 httpContextMock.Setup(c => c.Request
8 .AppRelativeCurrentExecutionFilePath).Returns("~/Home/Index");
9
10 RouteData routeData = routes.GetRouteData(httpContextMock.Object);
11
12 Assert.IsNotNull(routeData, "Should have found the route");
13 Assert.AreEqual("Home", routeData.Values["Controller"]);
14 Assert.AreEqual("Index", routeData.Values["action"]);
15 Assert.AreEqual("", routeData.Values["id"]);
16 }
下面我們解釋一下上面的代碼
RouteCollection routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
這兩行的意思是將routes按照默認路由代碼中的格式生成相應的路由。
var httpContextMock = new Mock
httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Home/Index");
這兩行的意思是創建一個HttpContextBase的mock類,這里我們使用的是MoQ框架來生成mock類(參見:MoQ(基于.net3.5,c#3.0的mock框架)簡單介紹 )。
文章來源于領測軟件測試網 http://www.kjueaiud.com/