Примерно полгода назад я начал копаться в модульном тестировании. Я пробился в TDD (или как я думал) и теперь я хочу разработать приложение MVC, ориентированное на поведение.
Концепция приемочных испытаний (реальных сквозных) является новой для меня, поскольку мой последний проект не выполнялся в среде приемочных испытаний.
Я начал с прочтения некоторых хороших статей, в частности http://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/ Сандерсона, и подкрепляю свои навыки MVC, читая его книгу на эту тему.
Я использую SpecFlow и SimpleBrowser для сквозного тестирования.
Управлять навигацией через панель навигации было легко, но я застрял.
Я стремлюсь реализовать учетные записи пользователей для дальнейшего создания статей и комментариев. Вождение в процессе регистрации доставило мне головную боль. Учитывая этот файл функции:
Feature: User accounts
In order to customize and influence page content
As a user
I want to able to create an own user account
Scenario: Create a user
Given I am on the /Account/Create page
When I fill out the registration formular as follows
| NickName | EmailAddress |
| test123 | test.address@test-server.com |
And I click the "Create" button
And I clicked the link in the authentication mail
Then I should be on the root page
And I should see the message "Welcome test123!"
Я не могу понять, как обеспечить необходимую среду тестирования (почтовый сервер в этом примере) и сделать тест менее хрупким (подумайте о переименовании кнопки «Создать» в «Отправить»). Не говоря уже о переплетении в генераторе захвата, чтобы предотвратить автоматическое создание пользователя (о, ирония) в более позднее время. Может быть, я просто слишком много думаю впереди, чего на самом деле не следует делать в TDD, но иногда я просто смотрю на экран и думаю о своем следующем тесте.
Так ... после этой стены текста актуальный вопрос: как мне реализовать такое поведение?
- Придерживайтесь тестов уровня UI и рефакторинг, если это необходимо для реализации логики захвата
- Откат к тестированию уровня контроллера
- Любой другой способ просветить меня на