簡単な答えは、1 つのシナリオでこれを行う必要はないということです。
ここでは次の 2 つのことを行っています。
- 登録中
- サインイン
最初に2番目に対処しましょう。
サインインするには、登録する必要があるため、次のようなシナリオが得られます
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
これを行うことができるのは、「登録」シナリオを機能させることで登録する機能を作成したためです。
これで、サインインに取り掛かることができます
これが、Cucumber を使用した BDD のしくみです。少しの動作の実装に取り組みます (通常は When で、登録など)。次に、その動作を (Givens で) 使用して、新しい動作の実装 (サインイン) に取り組むことができる場所に到達できるようにします。
それが役立つことを願っています
もう少し詳しく:
メソッド create_new_user、register はヘルパー メソッドと呼ばれます。これらは、より単純なステップ定義を記述するための鍵です。Rubyでは、次のように定義できます
module SignupStepHelper
def register
...
def create_new_user
...
end
World SignupStepHelper # makes it possible to call the methods in you step defs.