Анти-паттерн заключается в том, что вы используете свои возможности / сценарии для описания того, КАК вы делаете что-то, а не для того, чтобы ваши функции / сценарии описывали ЧТО вы делаете и ПОЧЕМУ это важно.Вы можете вставить детали того, КАК вы делаете вещи, в тела определений шагов, или, что еще лучше, в вспомогательные методы, которые могут вызывать определения шагов.
Из вашего примера у вас явно есть два сценария
- пользователь регистрируется (я предпочитаю использовать здесь 'регистрация')
- пользователь регистрируется
Итак
Scenario: Sign up
When I sign up
Then I should be signed up
Scenario: Sign in
When I sign in
Then I should be signed in
И в стеке какой-то вспомогательный метод(у меня в Ruby)
def sign_up(new_user: )
visit sign_up_page
fill_in :email, with new_user.email
fill_in :password, with new_user.password
fill_in :confirmation, with new_user.password
...
submit_form
end
def sign_in(user: )
visit sign_in_page
fill_in :email, with user.email
fill_in :password, with user.password
submit_form
end
Работая таким образом, вы четко различаете sign_in и sign_up и не можете использовать неправильное определение шага.