Хорошо, я решил попытаться справиться со всем процессом TDD от начала до конца.
Я пишу простой блог в ASP.NET MVC 2 Application и начал с приемочных тестов, чтобы проверить свои возможности по мере их реализации. Я использую SpecFlow в качестве моего BDD / ATDD фреймворка.
Я читал « Растущие объектно-ориентированные системы, управляемые тестами », поэтому я начал так, как я.
Я был бы в точке, описанной как нулевая итерация в книге, где я создаю "Ходячий скелет"
Я решил начать процесс входа в систему как мой «самый тонкий функционал, который тестирует все компоненты системы». В данном случае сам сайт и база данных.
Итак, я написал историю, подробно описывающую вход в систему, и первый сценарий, который я пишу, - вход в систему успешно.
Одна из данностей в указанном сценарии -
"Given there is a registered user with the username 'TestUser' and password 'TestPassword'"
Однако я не уверен, как бы я реализовал этот шаг.
Очевидно, это означает, что в базе данных должен быть пользователь с данными учетными данными. Однако, как хороший маленький программист, я бы хотел, чтобы пароль каким-то образом хешировался.
Я думал о написании какого-то класса DatabaseHelper, который может вставить его для меня. Однако он будет содержать хеш-код для хеширования пароля, и тогда самому приложению потребуется тот же хеш-код, который, похоже, нарушает DRY.
Так что на самом деле здесь есть несколько связанных вопросов:
- Означает ли тот факт, что я борюсь с этим шагом, я должен начать откуда-то еще? Хотя система входа в систему довольно важна для остальной части сайта? Возможно, это не самый тонкий функционал, который тестирует и сайт, и базу данных?
- Если бы вы начали с того же места, что и я, как бы вы это сделали? Вы не будете беспокоиться о СУХОЙ еще? Поскольку Acceptance Tests тестирует функциональность извне через браузер, возможно, я мало что могу сделать?
Я должен извиниться, если вопрос кажется несколько расплывчатым, у меня нет никого, кто мог бы изучить TDD с этой стороны, и это один из тех сдвигов парадигмы, что у меня просто еще не было такого момента "а-ха". 1032 *
Заранее спасибо.