Pregunta

Tengo un "cuando" en JBehave que bajo ciertas circunstancias debe lanzar una excepción.No puedo encontrar ninguna documentación, sin embargo, sobre cómo manejar esto.Aquí está mi escenario:

dado un juego con 6 existentes de las apuestas y el juego de las apuestas de máximo son 6 cuando un usuario realiza una apuesta

no hay entonces, ya que quiero una excepción que se produce cuando el usuario coloca la apuesta.

Tenga en cuenta, que no siempre quieren que el cuando se produzca una excepción.E. g.cuando el existente apuestas están a menos de max apuestas.En ese caso, quiero hacer algo de lo que se garantiza el "entonces".

¿Fue útil?

Solución

Detalles de la implementación y "Computer-ese" no tienen cabida en los escenarios


Mi comprensión de BDD es que es grupos de interés -enfocado, permitiendo no técnica que la gente escriba lo que se supone un sistema para hacer, usando (más o menos) naturales lengua, de manera que los desarrolladores pueden codificar a:

Se extiende TDD al escribir casos de prueba:

  

en un lenguaje natural que   no programadores pueden leer.   
[ Wikipedia ]   

Dicho esto, un grupo de interés nunca se escribiría "una excepción" en una "continuación". Probablemente iba a escribir:

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.

o

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

Otros consejos

Como no hay respuestas aún, voy a dar una oportunidad. A mi modo de hacer esto es mediante el almacenamiento de la excepción como parte del estado interno de la aplicación 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
  }

}

Esto funciona bien para mí, pero requiere una cuidadosa gestión del estado.

Hemos utilizado el patrón sugerido por Nils Wloka, respuesta muy válida, capturar la excepción en "Cuando" utilizando intento -.> Captura y luego se valida contra excepción esperada en "A continuación" paso

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top