キュウリのステップ定義をテストします。私たちがチェックできるようにしたいのは、実際に失敗すると予想されるテストが失敗するということです。これを行うためには、失敗するシナリオを記述してテストスイートに追加したいが、失敗した場合にのみ "合格"するようにタグ付けするか、そうでない場合は表示する。どのようにこれにアプローチしますか?キュウリの失敗したステップと失敗をどのように予想するのですか?
5
A
答えて
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)
をスローしないことを確認することができます。
-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"
目的は、テストすることではありません状態が真ではないということは、状態が真でないときにテストが失敗することをテストすることです。つまり、状態をテストするのではなく、手順をテストしています。 – kerkeslager