Простой ответ заключается в том, что вы не должны делать это в одном сценарии.
Вы делаете две вещи здесь:
- , регистрирующих
- Подписание в
Позволяет сделке с вторым первым.
Чтобы войти в нас должны быть зарегистрированы таким образом мы получаем сценарий, как
Scenario: Sign in
Given I am registered
When I sign in
Then I should be signed in
Но как же мы регистрируем?
Scenario: Register
Given I am a new user
When I register
Then I should be registered
Теперь, как мы реализуем эту
Given "I am a new user" do
@i = create_new_user
end
When "I register" do
register as: @i
end
Then "I should be registered" do
# Go look at something to see that we are registered
end
Когда это работает теперь мы можем реализовать
Given "I am registered" do
@i = create_new_user
register as: @i
end
Мы можем сделать это, потому что мы создали возможность регистрации на получение нашего " Регистрация ".
И теперь мы можем работать над подписанием в
Это как BDD с огурцами работает. Вы работаете над реализацией небольшого количества действий (обычно в режиме «Когда», например, для регистрации).Затем вы используете это поведение (в Гивенс), так что вы можете добраться до места, где вы можете работать над реализацией какой-то новое поведение (вход в)
Надежда Thats помогает
Немного более подробно:
В методы create_new_user, регистр называется вспомогательными методами. Это ключ к написанию более простых определений шагов. В рубине вы можете определить их следующим образом:
module SignupStepHelper
def register
...
def create_new_user
...
end
World SignupStepHelper # makes it possible to call the methods in you step defs.