2

Cucumber では、機能全体に対してバックグラウンド ステップを実行できますか? それで、すべてのシナリオで繰り返されるわけではありませんか?

検索エンジンでいくつかのテストを実行していますが、検索エンジンにテスト データを事前にシードする必要があります。このデータの生成と処理にはかなりの時間がかかる可能性があるため (私は Elasticsearch を使用しており、インデックスを作成する必要があります)、このバックグラウンドを 1 回だけ実行したいと思いますが、同じ機能でのすべてのテストに対してのみ実行します。

キュウリで可能ですか?

私はMongoDBを使用しているため、トランザクションではなく切り捨てを使用していることに注意してください。各テストの後にDatabaseCleanerが自動的に実行されていると思います。

編集 :

はい、Rails の Ruby ステップで Cucumber を使用しています

EDIT2:具体例

  • 検索エンジンが常に関連する結果を返すことをテストする必要があります (たとえば、「買い手」を検索する場合、「買い手」、「購入」、「購入」などの結果を返す必要があります (ES 構成と関係があります)、および他のコンテキスト情報は正しく更新されます (サイドバーなど)。

  • 括弧内にヒット数を含むカテゴリ/フィルターがあります。ユーザーがフィルターで遊んでいるときに、これらの数が更新されるようにする必要があります)

このために、検索エンジンに多数の結果を事前にシードし、同じ入力に基づくすべてのテストを実行します。少し違うことをするだけの「例」節がよくありますが、同じシードに基づいています

4

2 に答える 2

1

検索データがシナリオの意味のある部分であり、機能を読んでいる人が知っておくべきものであると仮定すると、フックに隠すのではなく、ステップに入れます。やりたいことを行うための組み込みの方法はないため、ステップを自分でべき等にする必要があります。最も簡単な方法は、グローバルを使用することです。

features/step_definitions/search_steps.rb:

$search_data_initialized = false

Given /^there is a foo, a bar and a baz$/ do
  # initialize the search data
  $search_data_initialized = false
end

features/search.feature 内:

Feature: Search

  Background:
    Given there is a foo, a bar and a baz

  Scenario: User searches for "foo"
  ...
于 2016-09-02T14:30:58.600 に答える