2011-02-01 16 views
5

キュウリのステップ定義をテストします。私たちがチェックできるようにしたいのは、実際に失敗すると予想されるテストが失敗するということです。これを行うためには、失敗するシナリオを記述してテストスイートに追加したいが、失敗した場合にのみ "合格"するようにタグ付けするか、そうでない場合は表示する。どのようにこれにアプローチしますか?キュウリの失敗したステップと失敗をどのように予想するのですか?

答えて

0

負の状態でテストする必要があります。不合格のステップは、単に渡すステップの逆です。だから、次のようなことをしてください:

Then /i should not be true/ do 
    some_value.should_not be_true 
end 

これは私が失敗のテストをする方法です。また、例外などをキャッチし、ブロックが実際にあなたが単に否定的な結果をテストするためのテストケースでのテストではなく、肯定的な結果を逆にその例外

lambda do 
    something_that_horks 
end.should raise_error(Specific::Error) 

をスローしないことを確認することができます。

+0

目的は、テストすることではありません状態が真ではないということは、状態が真でないときにテストが失敗することをテストすることです。つまり、状態をテストするのではなく、手順をテストしています。 – kerkeslager

-1

-wスイッチをCucumberコマンドに渡します。

通常の形式を出力しますが、最後にすべてのテストケースが失敗したかどうかを要約して示します。

0

これは非常に複雑な例ですが、最終結果はキュウリのシナリオが失敗すると期待する本当にクリーンな方法です。これらは私が取り組んでいるプロジェクトのほんの一部の小さなコンポーネントです。不足しているデータを持つユーザーを作成する理由は、ユーザーモデルにバリデーターがいくつかあるためです。すべてのソースコードはhereです。ここ

機能/ step_definitions/before_step.rb

Before("[email protected]") do 
    def assert_cucumber(assersion, msg = "an error was thrown") 
    assert(assersion == true, msg) 
    end 
end 

Before("@fails") do 
    def assert_cucumber(assersion, msg = "an error was thrown") 
    assert(assersion == false, msg) 
    end 
end 

機能/ step_definitions/user_step.rb

Given /^a user with$/ do |params| 
    params = params.rows_hash 
    unless User.find_by({username: params[:username]}) 
    assert_cucumber(User.new(params).save, "could not create user") 
    end 
end 

機能/ user.feature

Scenario: check if userers exsist 
    Given a user with 
    | username | johnsmith    | 
    | email | [email protected] | 
    | password | password    | 
    Then a user with username "johnsmith" 

@fails 
Scenario: create user with missing data 
    Given a user with 
    | username | johndoe | 
    Then a user with username "johndoe" 
関連する問題