Question

J'ai un « quand » dans JBehave qui, dans certaines circonstances, devrait jeter une exception. Je ne peux pas trouver toute la documentation, cependant, sur la façon de gérer cela. Voici mon scénario:

donné un jeu avec 6 paris existants et paris max du jeu sont 6 lorsqu'un utilisateur place un pari

il n'y a pas alors, puisque je veux une exception levée lorsque l'utilisateur place le pari.

Gardez à l'esprit, je ne veux pas toujours le moment de lancer une exception. Par exemple. lorsque les paris existants sont moins de paris max. Dans ce cas, je veux faire quelques assurer la « puis ».

Était-ce utile?

La solution

Mise en œuvre Détails et "Computer-ese" Ne pas Belong dans les scénarios


Ma compréhension de la BDD est qu'il est parties prenantes axé sur les besoins, ce qui permet non techniques les gens à écrire ce système est censé faire, en utilisant (plus ou moins) naturel langue, d'une manière que les développeurs peuvent coder à:

Il étend TDD en écrivant des cas de test:

  

dans une langue naturelle   les non-programmeurs peuvent lire.   
[ wikipedia ]   

Cela dit, une partie prenante n'écrirait « jeter une exception » dans un « Ensuite ». Ils avaient probablement écrire:

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.

ou

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

Autres conseils

Comme il n'y a pas encore de réponse, je vais faire un essai. La façon dont je le fais est en stockant l'exception dans le cadre de l'état interne de la mise en œuvre 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
  }

}

Cela fonctionne bien pour moi, mais nécessite une gestion prudente de l'État.

Nous avons utilisé le modèle proposé par Nils Wloka, réponse très valable, saisir l'exception dans « Quand » à l'aide essayer -.> Prises puis valider contre exception prévue «puis » étape

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top