Adresy URL dla menu w moich aplikacjach ASP.NET MVC są generowane przez kontroler/akcje. Tak więc nazywają się:ASP.NET MVC: Mock controller.Url.Action
controller.Url.Action(action, controller)
Jak to zrobić w testach jednostkowych? używam MvcContrib powodzeniem
var controller = new TestControllerBuilder().CreateController<OrdersController>();
ale co staram się zrobić z niego uzyskać controller.Url.Action (akcja, kontroler) w przypadku braku z NullReferenceException ponieważ Url == null.
Aktualizacja: nie chodzi o przechwycenie HttpContext. Zrobiłem to na kilka sposobów, używając MVCContrib, przykładu udawania Scotta Hanselmana, a także tego z http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx. To mi nie pomaga, ponieważ muszę wiedzieć, jakie wartości warto fałszować ... czy to jest ApplicationPath? Jak to skonfigurować? Czy musi pasować do nazwanego kontrolera/działania? To znaczy, jak działa Url.Action i jak mogę go zaspokoić?
Ponadto, wiem, że mogę zrobić IUrlActionAbstraction i iść z tym ... ale nie jestem pewien, czy chcę to zrobić. W końcu mam pełną moc MVCContrib/Mock i dlaczego potrzebuję kolejnej abstrakcji.
Jaki jest twój pakiet testowy? –
Nie warto odpowiedzieć sam, więc wskażę podobną odpowiedź: http://bit.ly/aSJ0a –
Tak, użyłem tego linku i nie zadziałało. Właściwie próbowałem obu wersji Scotta i MVCContrib. Co staram się zrozumieć, jakie wartości muszę skonfigurować? Co właściwie używa Url.Action()? To znaczy. na podanym linku znajduje się wersja Moq, która konfiguruje wiele zmiennych ... czy WSZYSTKIE z nich są potrzebne? Wypróbowałem je wszystkie bez szczęścia. – queen3