Как сделать Спецификационное тестирование с ASP.NET MVC Просмотр ошибок - PullRequest
0 голосов
/ 31 января 2011

Я делаю BDD для проекта MVC3 с SpecFlow. Мой текущий сценарий спецификации говорит, что:

Given a user is working on the system
When an error is raised
Then the user should be redirected to error page
And display a link to go back where he came from

Как я могу протестировать такую ​​спецификацию? Обычно я тестирую контроллер напрямую, однако представление «Ошибка», представленное стандартным шаблоном MVC3, не имеет контроллера, и контроллер не используется, поскольку перенаправляется глобальным фильтром HandleError.

В исключительных случаях я использую Watin , чтобы проверить, что поведение соответствует тому, что говорит спецификация, однако для этого мне нужно представление, которое вызывает ошибку, то, что, когда все работает, у меня нет .

Есть идеи по тестированию подобных сценариев?

1 Ответ

0 голосов
/ 01 февраля 2011

У меня есть несколько мыслей по этому сценарию:

1.) «Учитывая, что пользователь работает в системе» - довольно смутный шаг. Какой код будет найден в определении шага? Если у вас нет пользовательского класса, у которого есть метод WorkingOnSystem, возможно, стоит убрать эту строку.

2.) Не смотря на остальную часть вашего кода, я думаю, что целью этой функции должен быть сам фильтр HandleError. По самому определению вы знаете, что при его вызове произошла ошибка. Все, что вам нужно сделать, - создать экземпляр фильтра, вызвать соответствующий метод и проверить результаты.

Подумайте об этом так: что означает «Когда возникает ошибка» в вашей системе? Если ваш фильтр HandleError не тот, то у вас, вероятно, нет места a . В этом случае вам нужно быть более конкретным.


Я думаю, что неловкость вокруг этой спецификации связана с ASP.Net MVC. Когда вы имеете дело с каркасом абстракций, вам иногда приходится «обматывать» свои спецификации вокруг какой-то его части. Мы просто не можем идти сквозным легко, когда части приложения приходят из очень многих мест.

...