URL-адреса в моих приложениях ASP.NET MVC генерируются из контроллера/действий. Таким образом, они называют
controller.Url.Action(action, controller)
Теперь, как мне сделать эту работу в модульных тестах? Я успешно использую MVCContrib с
var controller = new TestControllerBuilder().CreateController<OrdersController>();
но все, что я пытаюсь сделать с ним, я получаю control.Url.Action(действие, контроллер) с ошибкой NullReferenceException, потому что Url == null.
Обновление: это не о том, как перехватить HttpContext. Я сделал это несколькими способами, используя MVCContrib, пример фальсификации Скотта Хансельмана, а также один из http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx. Это не помогает мне, потому что мне нужно знать значения WHAT для подделки... это ApplicationPath? Как мне настроить его? Нужно ли соответствовать вызываемому контроллеру/действию? То есть, как работает Url.Action и как его удовлетворить?
Кроме того, я знаю, что могу выполнять IUrlActionAbstraction и идти с ним... но я не уверен, что хочу это сделать. В конце концов, у меня есть MVCContrib/Mock полная мощность и почему мне нужна другая абстракция.