質問
私は「いつ」JBehaveに、特定の状況下で例外をスローすべきです。私はこれを処理する方法に、しかし、任意のドキュメントを見つけるカント。ここに私のシナリオがあります:
6つの既存のベットとゲームの最大ベットでゲームを与えられた6です ユーザーが賭けを置いたときに、
私は、ユーザが賭けを置いたときに例外がスローされたいので、は、何もありません。
を覚えておいてください例外をスローするとき、私はいつも望んでいません。例えば。既存の賭けは、MAXベット未満のとき。その場合、私はいくつかの「その後」の確保をしたい。
解決
実装の詳細およびシナリオに属さない「コンピュータ-ESE」
BDDの私の理解では、それがの利害関係者の-focused、の非技術的なの人々がシステムを使用して、行うことになっているものを書くことができるように(多かれ少なかれ)自然なことです開発者がコーディングにできるような方法で言語、ます:
これはテストケースを書くことでTDDを拡張:
<私>という自然言語で 非プログラマが読むことができます。
[ウィキペディアする]
これは利害関係者は、「その後」の「例外を投げる」書くことはない、と述べました。彼らはおそらく記述します:
Given a game where 6 bets are allowed and 5 bets have been made,
When a user makes the 6th bet,
Then the "Bet" button should become disabled.
または
Given a game where 6 bets are allowed and 6 bets have been made,
When a user tries to make a bet,
Then the a message appears, saying:
"You can not bet. The maximum of 6 bets has already been placed."
他のヒント
何の答えはまだ存在しないとして、私はそれを試してみるだろう。私はこれを行う方法は、Steps`実装の内部状態の一部として例外を格納することである。
public class MySteps extends Steps {
private Throwable throwable = null;
@When("something happens")
public void somethingHappens() {
try {
// Event part of the specification
} catch (MyException e) {
throwable = e;
}
}
@Then("an exception is thrown") {
public void verifyException() {
assertThat(throwable, allOf(notNullValue(), myExceptionMatcher()));
}
private Matcher<Throwable> myExceptionMatcher() {
// Build and return some Matcher instance
}
}
これは私のためにうまく動作しますが、慎重に状態管理を必要とします。
私たちは試して使用して「とき」で例外を捕捉し、ニルスWloka、非常に有効な回答が提案したパターンを使用していた - 。>キャッチし、その後に予想される例外に対して検証「その後」ステップ
所属していません StackOverflow