Frage

Ich habe ein „wenn“ in JBehave, die unter bestimmten Umständen sollte eine Ausnahme werfen. Ich kann nicht alle Unterlagen finden jedoch, wie dies zu handhaben. Hier ist mein Szenario:

ein Spiel mit 6 bestehenden Einsätzen und dem Spiels max Wetten gegeben sind 6 wenn ein Benutzer platziert eine Wette

es gibt keine dann, da ich eine Ausnahme ausgelöst werden soll, wenn der Benutzer die Wette platziert.

Beachten Sie, ich will nicht immer die, wenn eine Ausnahme ausgelöst. Z.B. wenn die vorhandenen Wetten sind weniger als max Wetten. In diesem Fall möchte ich etwas zu gewährleisten in der „dann“.

tun
War es hilfreich?

Lösung

Implementierungsdetails und "Computer-ese" gehören nicht in Szenarien


Mein Verständnis von BDD ist, dass es Stakeholder -focused, so dass nicht-technische Menschen schreiben, was ein System tun soll, mit (mehr oder weniger) Natur Sprache, in einer Weise, dass Entwickler können Code:

Es erstreckt sich TDD von Testfällen zu schreiben:

  

in einer natürlichen Sprache,   Nicht-Programmierer können lesen.   
[ wikipedia ]   

sagte, dass wäre ein Stakeholder nie schreiben „eine Ausnahme“ in einem „Dann“. Sie würden wahrscheinlich schreiben:

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.

oder

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."

Andere Tipps

Da es noch keine Antworten gibt, werde ich es versuchen. Die Art, wie ich dies tun, ist durch die Ausnahme als Teil der Steps` Implementierung des internen Zustand speichern:

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
  }

}

Das funktioniert gut für mich, aber erfordert eine sorgfältige Zustandsverwaltung.

Wir haben das Muster von Nils Wloka, sehr gültige Antwort vorgeschlagen verwendet haben, fangen die Ausnahme in „Wenn“ Versuchen Sie es mit -.> Fangen und dann validieren gegen erwartete Ausnahme in „Then“ Schritt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top