5

私はキュウリのテストに不慣れです。

2つの機能ファイルを作成しました。

events.feature
partner.feature

ステップ定義をstep_definitionsフォルダーに入れます。

./step_definitions/
     events.rb
     partner.rb

Cucumberは、すべての.rbファイルでステップ情報を検索しているようです。

特定のステップ定義ファイルを参照するように機能を制限する方法はありますか?

これを実行したい理由は、-guessフラグを使用している場合でも、あいまいな一致エラーが発生するためです。

私がこれをやりたい理由は次のとおりです。私はCMSをテストしており、さまざまなコンテンツタイプ(イベントとパートナー)のそれぞれを別々の機能でテストしたいと考えています。

events.feature

Feature: Add partner
  As an administrator I can add a new partner

  Scenario: Create partner
    Given I am logged in
    When I create a partner
    Then I should see content

パートナー。機能

Feature: Add event
  As an administrator I can add a new event

  Scenario: Create event
    Given I am logged in
    When I create an event
    Then I should see content

両方のシナリオにある「コンテンツが表示されるはずです」に焦点を当てるだけで、エラーが発生します。これは、.rbファイルに次のものを含める必要があるためです。

Partners.rb

Then /^I should see content$/ do
  BROWSER.html.should include('SOME PARTNER CONTENT')
end

events.rb

Then /^I should see content$/ do
  BROWSER.html.should include('SOME EVENT CONTENT')
end

これは、「コンテンツを表示する必要がある」というあいまいな一致があることを意味します。

これを構成するさまざまな方法があることを理解しています。つまり、コンテンツ機能を作成し、シナリオの概要を使用できます。

Feature: Add content
  As an administrator I can add a new content

  Scenario Outline: Create content
    Given I am logged in
    When I create an <content type>
    Then I should see <example content>

    Examples: 
    |event   |March Event | 
    |partner |Joe Blogs   | 

しかし、各コンテンツタイプを独自のテスト機能にカプセル化したいので、これは行いたくありません。

したがって、基本的に、テストしている機能に応じて特定のステップファイルを実行する方法を理解する必要があります。

4

3 に答える 3

9

Cucumberは常にすべてのファイルをロードしますが、この動作をオーバーライドする方法はないと思います。あいまいなステップに関する問題について-解決策は簡単です-ステップにパラメーターを追加します

Then /^(?:|I )should see "([^"]*)"$/ do |text|
  page.should have_content(text)
end

そしてシナリオでは、このように呼んでください

次に、「パートナーコンテンツ」が表示されます。

  • 無料ボーナス-シナリオがはるかに読みやすくなりました
于 2011-08-03T14:04:58.440 に答える
1

あなたが提案した別のアプローチには何の問題もありません。ステップ定義を論理ドメインに分離することは理にかなっています。ただし、やりすぎのようです。これにより、コードが大量に重複し、現在のようにあいまいな一致が発生する可能性があります。私はこのようなことをすることをお勧めします:

Feature: Add partner
  As an administrator I can add a new partner

  Scenario: Create partner
    Given I am logged in
    When I create a partner
    Then I should see "partner content"

そして、同様に、あなたのイベント機能では:

...
Then I should see "event content"

step_definitions/common_steps.rb次に、別のファイルで次のことができます。

Then /I should see "(.*)"$/ do |content|
   BROWSER.html.should include(content)
end

このステップには、特定のパートナー/イベントはありません。代わりに、シナリオには、機能のデータ固有の文字列が含まれています。

Railsアプリで作業している場合、cucumber-rails gemは、実際にWebアプリケーションをテストするための一連の一般的な手順を作成します。Railsを使用していない場合でも、これらの手順のいくつかを確認すると役立つ場合があります。

于 2011-08-03T14:07:09.900 に答える
0

私はこれを探していましたが、「箱から出して」は不可能のようです。

私の解決策は、クラス名などの何らかの追加の説明を常に使用して、ステップを区別することです。たとえば、次のようになります。

Scenario: Buildings List
    Given I have a Building with code "B1"
    And I have a Building with code "B2"
    When I go to the list of buildings
    Then I should see "B1" building code
    And I should see "B2" building code

これらの「建築基準法」の説明は、異なるファイル/ドメイン間で手順を再利用する必要がないすべてです。

于 2011-10-01T12:00:09.657 に答える