2

私はきゅうりが初めてで、機能を定義する最良の方法を見つけようとしています。

サイトを複数の言語でテストする必要があるため、テストしたい機能は常に同じですが、言語が異なると、ページで検索する必要があるテキストが異なる場合があります。これは大まかに私がやりたいことです:

Scenario Outline: Browse through category from the home page
    Given I am on the <country> home page
    When I browse categories
    Then I should get the browse category page

Examples:
     | country |
     | UK      |
     | IT      |
     | US      |

機能の説明自体でカテゴリの値を指定していません。理由は次のとおりです。

  1. DB からカテゴリを読み取れるようにしたいので、カテゴリを追加/削除するたびに、テスト自体を変更する必要はありません
  2. 同じ機能ファイルに 20 のカテゴリを持つ 10 の国があると想像してみてください...混乱するでしょう
  3. 2 を回避するために、国ごとに機能ファイルを作成できますが、同じ機能の説明を N 回コピーして貼り付ける必要があります。

別のステップから別のステップを解決策として呼び出すことを考えました。次の擬似コードのようなもの:

When /^I browse categories$/ do
  on CURRENT_HOME_PAGE do |page|
     page.categories_list.each do |category|
        ....visit category page....
        ....call "Then I should get the browse category page" step...
        ....go back to CURRENT_HOME_PAGE....
     end
  end
end

これが最善の最善の解決策であるかどうかはわかりません。ほとんどの人は、ステップからステップを呼び出すことも非推奨にしています。ステップと機能の定義を混同するのは好きではないので、個人的には好きではありません。

4

1 に答える 1

0

ステップ定義の代わりに Ruby メソッドを呼び出し、Cucumber インスタンス変数を使用するのはどうですか?

私は次のようなことを意味します:

Given /^I am on the (\w+) home page$/ do |country|
  @country = country # use Cucumber instance variable (it will be available in next steps of this scenario)
end

When /^I browse categories$/ do
  # read expected categories from DB for @country
  # visit Browse Categories page for @country
  # check that correct categories are shown
  expected_categories.each do |category|
    # visit category page
    # check that correct category page for @country is shown
  end
end
于 2013-03-02T12:48:12.437 に答える