2012-03-21 2 views
2

Ruby on Rails 3.2.2、cucumber-rails-1.3.0、rspec-rails-2.8.1、capybara -1.1.2およびfactory_girl-2.6.3。キュウリを使ってテストするための "奇妙な"(おそらく "極端な"または "クレイジーな")アプローチ

Scenario: I register an user 
    When I fill in "Name" with "Foo" 
    And I fill in "Email" with "[email protected]" 
    And I fill in "Password" with "test_password" 
    And I click button "Register" 
    Then I should be redirected to the homepage 

と私はどこ、トークンを使用することによって、テストする必要がありシナリオを実装する(区切りファイル内で)新しい機能を述べるしようとしている:私は、ユーザーがテストシナリオは次のようにサインアップする必要があり(注::実際には、このプロセスには配信されるメールメッセージが含まれていますが、ではありません。はこのメールが送信されたかどうかをテストしたいので、この質問では無視してください)。排他的に確認プロセスをテストしたいので、Given I am a registered userのようなものを記述するための新しいFeature/Scenarioを実装することを考えました。Scenario: I register an userを実行します。いくつかの単語で

Scenario: I confirm an user 
    Given I am a registered user # Here I would like to run the 'Scenario: I register an user' 
    When I go to the confirmation page 
    And I enter the confirmation token 
    Then ... 

私は別のシナリオ内全体のシナリオを呼び出すように思いました。

FactoryGirlの宝石を使用してユーザーを「作成」する - 登録することもできますが、私はテストしたいので、上記のアプローチを進めます(実際には、 「実際の人々」のようにできるだけ振舞うように行動するために、実際に行われるべきすべての「本当の」ステップに暗黙のうちに従うようにテストステップを実行するように、セレンの宝石によって管理されている新しいユーザーにサインアップする。このアプローチに従うことで、アプリケーション「インテリア」が適切に機能しているかどうかをテストできます。

正しいアプローチですか?いいえ、どうすればいいですか?

答えて

7

よく設計されたテストの原則の1つは、さまざまなフォームのすべてで特定の機能を実行することですが、それ以外のテストでは他の機能を実行することを前提としています。つまり、ユーザーが登録できることをテストしたら、別の方法でテストしない限り、同じものを再テストするべきではありません。

「私は登録ユーザーです」という表現は、ユーザーがすでに登録に成功したことを意味しています。実行しようとしているテストの範囲外であるため、この時点で登録をテストするべきではありません。

各テストには権限が必要であり、それに固執する必要があります。あなた自身を制限しなければ、あなたのテストは、無関係な相互依存の混乱に渦巻くでしょう。

0

ステップ内でシナリオを実行するための構文は次のとおりです。

Given /^I authenticate successfully$/ do 
    Given 'I am on the login page' 
    And 'I fill in "Email" with "[email protected]"' 
    And 'I fill in "Password" with "secret"' 
    When 'I press "Login"' 
    Then 'I should see "Welcome"' 
end 

決勝思考:一般的に、あなたのフィーチャーファイルが持っていない任意の、ちょうどそれがアクションを記述している---「記入」とあなたの踏み台に汚い仕事をさせてください。

関連する問題