2017-01-18 6 views
2

なぜこれが難しいのか分かりません。私はいくつかのことを試しましたが、何らかの理由でこのRuby Cucumberコードがブロック内の次のコードに続くか、 "予期しない復帰(LocalJumpError)"のようなものがあります。これは私が答えを見つけることができないことは明らかですか?Ruby Cucumberのステップ定義を早めに終了するにはどうすればいいですか?

"if条件== false"ですべてのコードをラップするだけで回避策がありますが、より良い方法がありますか?

When(/^I create scenarios$/) do 
    if condition == true 
    #exit, return, next, break ???? 
    end 
    #code i don't want to execute if condition matches 
end 
+2

キュウリのステップを「終了」する方法は、例外またはフロー制御です。適切な回避策があります。 実行を終了する場合は、条件を期待通りにする必要があります: 'expect(condition).to be_true'。 –

+0

あなたは 'break'を試しましたか? –

答えて

0

あなたは、あなたが与えているコードサンプルとなる問題は、あなたが実行したくないコードは、あなたの場合は、ブロックの一部ではないということです。

あなたはそれを書いたやり方で、if条件をチェックし、見つかったものに基づいて実行しますか?次に、実行したくないコードである次のコード行に移動します。

私の提案は、このような何かを試してみることです、ここではどうなる

When(/^I create scenarios$/) do 
    if condition == true 
    else 
    #code i don't want to execute if condition matches 
    end 
end 

何、それがあれば条件をチェックしており、それが本当であれば、コードは何もしないが、他のステップをスキップしますif条件を満たすためです。 if条件をチェックすると、falseに戻ると、elseステップに移り、そのコードを実行します。

私はこれを約束カントは、このコードを書くための最良の方法ですが、条件が真の場合に発生することは何もしたくないので、これは簡単で、問題

0

を解決するために十分である、私は中unlessを使用することをお勧めしますステップ定義。

When(/^I create scenarios$/) do 
    unless condition == true 
    #code you want to execute when the condition is false 
    end 
end 

の場合、フローは次のステップに移ります。

2

「次へ」を使用してブロックを早期に終了させたいと考えています。

next if condition 
関連する問題