Próbuję przetestować niektóre logiki aplikacji, które są zależne od właściwości Values w ControllerContext.RouteData.Szydzenie klasy RouteData w System.Web.Routing dla aplikacji MVC
tej pory mam
// 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);
Jednostka test nie powiedzie się z: System.ArgumentException: Nieprawidłowe ustawienie na nie przeciążać członka: r => r.Values
Tworzenie fałszywych RouteData nie działa tak jak konstruktor to RouteData (RouteBase, IRouteHandler).
Ważną klasą jest tutaj klasa abstrakcyjna RouteBase, która ma metodę GetRouteData (HttpContextBase), która zwraca wystąpienie RouteData, klasy, którą próbuję sfałszować. Zabieranie mnie w kółko!
Każda pomoc w tym zakresie byłaby bardzo pożądana.
Lol, dziękuję. To był przypadek przemyślenia problemu z mojej strony. Bardzo prosta. Twoje zdrowie. – Magpie