質問

私は「いつ」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、非常に有効な回答が提案したパターンを使用していた - 。>キャッチし、その後に予想される例外に対して検証「その後」ステップ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top