1. ホーム
  2. ruby

[解決済み] キュウリのステップを再利用

2022-12-14 13:58:45

質問

Cucumberのステップを再利用したいのですが、正しい方法を見つけることができないようです。

私は次のようなステップを書きたい。

Given /^I login with (.*) credentials$/ |type|
  # do stuff with type being one of "invalid" or "valid"
end

しかし、その後、次のような別のステップを持つ。

Given /^I login successfully$
  # call "Given I login with valid credentials"
end

ですから、ユーザー認証のテストでは前者を使うことができますが、他のほとんどの場所では後者を使うことができ、実際にコードを書き直す必要はありません。

その他のステップを呼び出す方法はありますか、それともヘルパーメソッドにロジックを入れて、各タスクからそのメソッドを呼び出すだけですか(基本的にメソッド抽出リファクタリングで、私の質問を読んだ後、とにかくそれが実際に最良の方法であると信じています)。

どのように解決するのですか?

アップデイト : 以下に説明する方法は非推奨となりました。他のステップの中からステップを呼び出す推奨方法は、現在以下のようになります。

Given /^I login successfully$/
    step "I login with valid credentials" 
end 


古い、非推奨の方法(参考)。

このように他のステップからステップを呼び出すことができます。

Given /^I login successfully$/
  Given "I login with valid credentials"
  Then "I should be logged in"
end

もし、ある機能内のすべてのシナリオがこの手順(または他の手順)を必要とする場合、以下のように共通の手順で各機能にBackgroundを追加することも可能です。

Background:
  Given I log in with valid credentials

Scenario: Change my password
  Given I am on the account page