2011-08-03 18 views
5

キュウリ試験の初心者です。キュウリの特徴とステップの定義

私が作成した2つの機能ファイル:

events.feature 
partner.feature 

とstep_definitionsフォルダ内の私のステップの定義があります。

./step_definitions/ 
    events.rb 
    partner.rb 

キュウリのステップについては、すべての.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 

partner.featureただ、どちらのシナリオである 'そして、私は、コンテンツが表示されるはずです'、エラーが原因で.rbのファイルで発生に焦点を当て

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 

私は含める必要があります。

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 | 

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

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

答えて

9

キュウリは常にすべてのファイルを読み込みます。この動作を無効にする方法はないと思います。解決策は簡単です - - あいまいなステップであなたの問題に関してはちょうどそれから私は「パートナーCONTENT」

  • が表示されるはずです。この

    のようにそれを呼び出すあなたのステップ

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

    とシナリオでにパラメータを追加無料のボーナス - あなたのシナリオははるかに読みやすくなりました。

+0

私はこの方法に同意します。それはあなたの踏み台として、もっと表現力があります。 –

1

あなたが提案した代替アプローチには何も間違いはありません。ステップ定義を論理ドメインに分けることは理にかなっています。あなたはあまりにも遠くそれを取るしようとしていることがあり、それはあなたが今見ているようにあいまいな試合で重複したコードと問題の良い取引につながることが起こっているようしかし、それはそうです。

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

:次に、あなたは別のstep_definitions/common_steps.rbファイルに次のことができ

... 
Then I should see "event content" 

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" 

そして、同様に、あなたのイベント機能で:私はこのような何かをやってお勧めしますこのステップには、パートナー/イベント固有のものはありません。その代わりに、シナリオには、フィーチャのデータ固有の文字列が含まれています。

あなたがRailsのアプリで作業している場合、cucumber-rails宝石は、実際にあなたのためのWebアプリケーションのテストのための一般的な手順の束を作成します。あなたがRailsのを使用していない場合でも、これらのstepsのいくつかを見てみましょうすると便利かもしれません。

+0

ええええええええええと - 私はあなたのポイントを重複したコードについて見ています - ありがとう。 – JonB

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 

これらの「建築基準」の記述は、あなたが別のファイル間のステップを再利用する必要はありませんすべてです/ドメイン。

関連する問題