2011-02-09 15 views
6

私はこの問題Cucumber scenarios for extremely long work flowキュウリの背景と持続シナリオ(または前提条件)

を持っていたそして今、私は、マルチパートフォームステップの長いシリーズごとに分離されたシナリオを書いてきました。私はそれぞれScenarioを設定するBackgroundセクションを持っています。しかし今、私が全体の機能を実行すると、キュウリはScenarioごとにBackgroundを繰り返すことを望みます。私はScenarioを試してみたい。

Feature: Submit a manuscript 
    In order to complete a manuscript submission 
    As a corresponding author 
    I want to complete the to-do list 

    Background: 
    Given I am logged in as "Steve" 
    And an article_submission "Testing Web Apps" exists 
    And "Steve" is a "Corresponding Author" for "Testing Web Apps" 
    And I am on the manuscript to-do list page for "Testing Web Apps" 

    Scenario: Steve suggests reviewers for his manuscript 
    ... 
    Scenario: Steve completes the manuscript fees to-do item 
    ... 
    Scenario: Steve wants to add Barbara as a co-author 
    ... 
    Scenario: Steve uploads necessary files 
    ... 
    Scenario: Steve edits the fees page and general information page 
    ... 
    Scenario: Steve re-uploads the manuscript file 
    ... 
    Scenario: Steve completes the Copyright Transfer 
    ... 
    Scenario: Steve completes Author Responsibilities & Agreement 
    ... 
    # These scenarios depend on all the previous ones having run 
    Scenario: Steve Completes submission 
    ... 
    Scenario: Steve goes back and make changes 
    ... 
    Scenario: Steve fills out payment page 

前のシナリオを必要とするための方法を実行することがありますされています:

ここに私の機能がどのように見えるかの裸の概要は? Backgroundを1回だけ実行する方法はありますか?

+1

私は、自分が必要としているものよりも自分のものを難しくしているかもしれないと思います。シナリオとしてリストされているものは、代わりにシナリオのステップのように私に読んでいます。あなたがリンクしている質問への答えに記載されているパンのように、あなたのシナリオは自己完結型で、このようなもの間に依存関係はありません。それが私なら、私はバックグラウンドとシナリオを一握りに崩壊させてしまいます(最後の3つはそれぞれ1つのシナリオになるでしょう)。そして、 "与えられたスティーブが原稿提出を完了しました"のようなより高いレベルのステップを使用し、それぞれのステップが確実に働くようにしてください。 –

+0

これらのシナリオは、ほとんどの場合、自己完結型です。私を信じて、これらのシナリオは短くはありません。私はすでに何百ものステップを持っています。それらを組み合わせると、読みにくくなり、自己完結型ではありません。私は、一般的に使用されているステップをステップ定義ファイルに移動することができるところであればどこでもリファクタリングしました。私が本当に必要と思うのは、機能を実行した後にデータベースをフリーズさせてから、それを次の依存機能の前にロードする方法です。 –

+0

私たちのアプリケーションの仕組みは、著者のために長いワークフローがあり、次にレビュー担当者用にもう1つ、改訂プロセス用に別のワークフローがあります。各ワークフローは、前のワークフローによって設定された条件に依存します。私はすでに多くの設備と工場にデータをロードしていますが、私が必要とするのは、すべてのモデルを一度に作成するファクトリです。 Feature Cをテストする必要があるたびに、Feature AとBを繰り返す必要はありません。 –

答えて

2

Featureを実行した直後の状態でアプリケーションを「フリーズ」することにしました。私はdatabseをダンプしてロードするフックを追加することでこれを行いました。 features/support/hooks.rb

私が持っている:

After('@complete-submission') do 
    # Dump the database 
    exec "mysqldump -u root --password=### onc_test > #{Rails.root}/support/submission.sql" 
end 

Before('@load-submission') do 
    # Load the database 
    exec "mysql -u root --password=### onc_test < #{Rails.root}/support/submission.sql" 
end 

これは@load-submissionは、シナリオを実行するために、神秘的に失敗しますが、データベースがロードされている以外、基本的に取り組んでいます。だから私はタグなしでもう一度それを実行しなければならない。たぶん、誰かが私を助けてくれるかもしれません。

関連する問題