Tôi đơn vị thử nghiệm các tuyến đường của tôi trong ASP.NET MVC 2. Tôi đang sử dụng MSTest và tôi đang sử dụng các khu vực là tốt.Đơn vị thử nghiệm ASP.NET MVC 2 tuyến đường với các khu vực bails ra trên AreaRegistration.RegisterAllAreas()
[TestClass]
public class RouteRegistrarTests
{
[ClassInitialize]
public static void ClassInitialize(TestContext testContext)
{
RouteTable.Routes.Clear();
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
[TestMethod]
public void RouteMaps_VerifyMappings_Match()
{
"~/".Route().ShouldMapTo<HomeController>(n => n.Index());
}
}
Khi nó thực hiện AreaRegistration.RegisterAllAreas()
tuy nhiên, nó ném ngoại lệ này:
System.InvalidOperationException: System.InvalidOperationException: Phương pháp này không thể được gọi trong pre-start khởi sân khấu của ứng dụng.
Vì vậy, tôi nghĩ rằng tôi không thể gọi nó từ bộ khởi tạo lớp của mình. Nhưng khi có thể tôi gọi nó? Tôi rõ ràng không có Application_Start
trong thử nghiệm của tôi.
Mục đích của tham số 'testContext' là gì? Nó không bao giờ được sử dụng. – MEMark
@MEMark - bắt buộc phải có [ClassInitialize] – Swati
@Swati Tất nhiên. Tôi đã không sử dụng MSTest trong một thời gian dài. – MEMark