Я пытаюсь войти в царство TDD, и у меня трудное время, когда я тестирую несколько своих пользовательских моделей. Я пытаюсь проверить правильность моих моделей, и бизнес-требования следующие:
- > = требуется 6-символьное имя пользователя
- > = пароль из 5 символов, по крайней мере с 1 буквой и цифрой
- требуется действительный формат электронной почты
- ... бла-бла-бла
- имя пользователя и адрес электронной почты уже не могут существовать в БД
Все требования легко проверяются, кроме 5, для которого требуется, чтобы база данных находилась в известном состоянии. Я знаю, что с помощью PHPUnit я могу установить свою базу данных в известное состояние, используя файлы XML, но есть ли лучший способ?
Я хочу, чтобы моя база данных вернулась в состояние, в котором она находилась до запуска тестов (т. Е. Во время разработки). Я полагаю, что я мог бы использовать транзакции MySQL для отката изменений, или я мог бы также использовать две отдельные базы данных, одну для разработки и одну для тестирования.
Я также где-то читал, чтобы не использовать фактические соединения с БД в модульных тестах, а вместо этого использовать фиктивные данные. Не совсем уверен, как это работает.
Может кто-нибудь объяснить мне различные варианты, которые у меня есть, и какие маршруты лучше?
Спасибо
Edit:
Я думаю, что я собираюсь использовать подход Ruby on Rails и просто настроить 3 отдельные базы данных, производство, разработку и тестирование. Если у кого-то нет сильных возражений.