Ich versuche einige Anwendungslogik zu testen, die von der Values-Eigenschaft in ControllerContext.RouteData abhängig ist.Verspotten der RouteData-Klasse in System.Web.Routing für MVC-Anwendungen
Bisher habe ich
// Arrange
var httpContextMock = new Mock<HttpContextBase>(MockBehavior.Loose);
var controllerMock = new Mock<ControllerBase>(MockBehavior.Loose);
var routeDataMock = new Mock<RouteData>();
var wantedRouteValues = new Dictionary<string, string>();
wantedRouteValues.Add("key1", "value1");
var routeValues = new RouteValueDictionary(wantedRouteValues);
routeDataMock.SetupGet(r => r.Values).Returns(routeValues); <=== Fails here
var controllerContext = new ControllerContext(httpContextMock.Object, routeDataMock.Object, controllerMock.Object);
Die Unit-Test mit fehlschlägt: System.ArgumentException: ungültiges Setup auf einem Nicht-overridable Mitglied: r => r.Values
eine gefälschte Routedata Erstellen funktioniert auch nicht, da der Konstruktor RouteData (RouteBase, IRouteHandler) ist.
Die wichtige Klasse hier ist die abstrakte Klasse RouteBase, die die Methode GetRouteData (HttpContextBase) hat, die eine Instanz von RouteData zurückgibt, die Klasse, die ich versuche zu fälschen. Nimm mich im Kreis herum!
Jede Hilfe zu diesem Thema wäre sehr willkommen.
Lol, danke. Dies war ein Fall von Überdenken des Problems von meiner Seite. Sehr einfach. Prost. – Magpie