Ich bin Gerät testen meine Routen in ASP.NET MVC 2. Ich benutze MSTest und ich verwende auch Bereiche.Unit testet ASP.NET MVC 2 Routen mit Bereichen ausbucht auf 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());
}
}
Wenn es AreaRegistration.RegisterAllAreas()
jedoch ausgeführt wird, wirft sie diese Ausnahme:
System.InvalidOperationException: System.InvalidOperationException: Diese Methode kann nicht während der Anwendung vor dem Start Initialisierungsphase aufgerufen werden.
Also, ich denke, ich kann es nicht von meinem Klasseninitialisierer aufrufen. Aber wenn kann ich es nennen? Ich habe natürlich keinen Application_Start
in meinem Test.
Was ist der Zweck des Parameters 'testContext'? Es wird nie benutzt. – MEMark
@MEMark - es ist erforderlich für [ClassInitialize] – Swati
@Swati Natürlich. Ich habe MSTest schon lange nicht mehr benutzt. – MEMark