1

Cucumberでテストするネガティブなシナリオがあります。具体的には、誰かが無効なハンドルを持つURLを投稿すると、サイトがエラーを返すようにしたいのです。

私のシナリオは次のようになります。

シナリオ:ハンドルが短すぎる人を作成するハンドルが「短すぎる」で「Fred」という名前の人が更新されると、500エラーが発生するはずです。

私のステップは次のようになります

/ ^personが"(。)"という名前でハンドル "(。)"が更新されると$ / do | name、handle | 「/mobile/ update?handle =#{udid}&name =#{name}」にアクセスしてください

シナリオを実行すると、Whenからのエラーのため、THEN部分に到達しません。

エラー:ハンドルなし(RuntimeError)

これは正しいです。いつ500エラーになるはずです。

いつを否定的なテストとして表現するかがわかりません。たぶん私はいつとは違うものを使うべきですか?

4

1 に答える 1

1

When ステップの正しい動作がエラーを発生させることである場合は、ラムダ ブロックを使用してこの RuntimeError をキャッチします。

When /^person named "(.)" with handle "(.)" updates$/ do |name, handle| 
  lambda { 
    visit "/mobile/update?handle=#{udid}&name=#{name}"
  }.should raise_error("No Handle")
end

発生しているエラーのタイプが正確にわからないため、 raise_error 部分を微調整する必要がある場合があります

そして、このような Then ステップを持つことができます (開始点)

Then /^the save should not be successful$/ do
  response.should be_nil
end
于 2009-10-11T08:27:40.210 に答える