シナリオには多くの UI の詳細があります。これにより、実際に検証している動作を理解することが難しくなります。
シナリオ名はいくつかのヒントを与えてくれますが、Given/When/Then の具体的な例には、目的をわかりにくくする多くの詳細が含まれています。
Scenario: Login with invalid username/password
Given I am signed out
When I log in with invalid user credentials
Then should I get an error message
Scenario: Login with valid username/password and valid PIN
Given I am signed out
When I log in with valid credentials
then should I be greeted
これら 2 つの例には、リンクまたはピン フォームに関する詳細は含まれていません。それらは、スタックにプッシュダウンする実装の詳細と見なされます。ステップが使用しているヘルパー クラスにそれらをプッシュします。Web アプリケーションを検証しているようです。これらの詳細を、手順をサポートするページ オブジェクトに保存します。
I
また、個人的な代名詞の使用を削除し、代わりにそれをペルソナに変更することも検討します. システムのユーザーに典型的なペルソナ。ペルソナには名前があります。管理部門で働く 35 歳の女性である「Ann」というペルソナを作成するとします。これにより、シナリオを次のように書き直す機会が得られます。
Scenario: Login with invalid username/password
Given Ann am signed out
When Ann log in with invalid user credentials
Then will she receive an error message
Scenario: Login with valid username/password and valid PIN
Given Ann am signed out
When Ann log in with valid credentials
then should Ann be greeted
これにより、アンが誰であるかがわかります。彼女のユーザー名とパスワードをサポート クラスに保持し、実装でそれらが適切に使用されることを期待できます。