Решение №2
Поехали дальше, требование номер 2:
Два раза на одну встречу зарегистрироваться нельзя.
Как уже все понимают, сначала пишем спецификацию:
- GIVEN уже зарегистрированный человек
- WHEN он пытается зарегистрироваться ещё раз
- THEN система выдаёт ошибку
Или то же самое с помощью Ruby и Rspec:
Или то же самое с помощью Java и JUnit:
Кстати, решение на JUnit имеет один серьёзный недостаток. Сможешь ли ты его найти, любознательный читатель? А исправить?
Ну и наконец, реализация второго требования. Как было сказано на семинаре, в будущем мы планируем заносить всех участников в базу данных, но пока её нет, можно просто хранить их в массиве.
Примерно так:
На этом первые два требования считаем реализованными, а тебе, неугомонный читатель, мы предлагаем реализовать остальные 4 требования и стать BDD гуру:
Имя и email обязательны.Два раза на одну встречу зарегистрироваться нельзя.- Если участвовал раньше — одно подтверждение, а если впервые — то другое.
- После регистрации мыло попадает в общий список участников
- Если все места заняты, то человек добавляется в очередь
- Если кто-то отказывается, то регистрируется первый человек из очереди (и ему посылается подтверждение)
Присылайте свои решения на andrei [точко] solntsev [собако] gmail [точко] com, а вопросы и дополнения можно писать в комментариях. Приветствуются решения на разных языках и библиотеках, таких как Easyb, JBehave, RBehave, RSpec, jDave, Cucumber и др.
За BDДело!
Страницы: 12
Anton Tanasenko
Честно говоря в BDD немного разочаровался. Ожидал от этой аббревиатуры чего-то большего.. другой подход что-ли.
А получились те же яйца только в профиль 🙂
Спойлер: в юнит тесте надо первую и вторую регистрацию вынести в отдельные тесты (методы), иначе падение IllegalArgumentException при первой регистрации будет расцениваться как правильное.
Andrei Solntsev
Наконец-таки спасибо за фидбак.
На самом деле я специально рассказывал про БДД так, чтобы показалось похоже на ТДД — для того, чтобы девелоперам было проще понять. И мои примеры все были низкоуровневые, то есть почто что юнит-тесты. А так вообще в БДД есть больше, чем я показал, так что разочаровываться не надо, а надо попробовать и посмотреть примеры.
djekk
lentjaichegi
Alexey
Какой недостаток решения на jUnit? Привязывание к IllegalArgumentException? Или название метода?