MVC TDD: Как написать тест для Response.Redirect? - PullRequest
3 голосов
/ 20 октября 2011

Я новичок в MVC и TDD, поэтому, если это глупый вопрос, пожалуйста, избавьте меня :)

Что я пытаюсь сделать, так это то, что я создал контроллер SignOn, и я просто хочу написать тест для этого контроллера. Дело в том, что контроллер SignOn выполняет внутренне Response.Redirect, который прекрасно работает, если это правильный запрос, но когда я запускаю свой тест, он терпит неудачу, так как нет объекта ответа.

так как я могу проверить свой контроллер SignOn, который перенаправляет изнутри ??

Ответы [ 4 ]

2 голосов
/ 20 октября 2011

Если вы хотите выполнить перенаправление, вы должны использовать результат действия: Redirect("url"). В своем тесте вы можете проверить, имеет ли actionresult тип RedirectResult и / или имеет ли он правильные значения свойств.

0 голосов
/ 13 августа 2012

Ваш метод действия должен возвращать RedirectResult .Если вы точно знаете, каким должен быть URL, вы можете проверить свойство Url.

0 голосов
/ 20 октября 2011

Одним из шаблонов, которые вы можете использовать для тестирования кода навигации внутри контроллера / презентатора, является ApplicationController.

Взгляните на следующее описание PEAA: Application Controller

Мы внедрили контроллер приложений в нашем приложении ASP.NET.

ApplicationController.Navigate(view: "LoginScreen", argument: userId);

ApplicationController проверяет, какие потоки NavigationWorks зарегистрированы, и переводит навигацию в правильный класс.

В своих модульных тестах вы можете смоделировать поток NavigationWorkflow с помощью чего-то похожего на макеты носорога и передать его в свой ApplicationController. Затем вы можете проверить правильность методов навигации в вашем рабочем процессе.

Таким образом, вместо вызова Response.Redirect вы делегируете ответственность за навигацию отдельному классу, который можно заменить модульным тестированием.

0 голосов
/ 20 октября 2011

Я не парень TDD, но что-то говорит мне, что HttpContextBase - ваш друг: http://msdn.microsoft.com/en-us/library/system.web.httpcontextbase.aspx

Вот хороший ресурс по этому вопросу.

http://weblogs.asp.net/gunnarpeipman/archive/2011/07/16/using-moq-to-mock-asp-net-mvc-httpcontextbase.aspx

Надеюсь, это поможет.

...