Вопрос

У меня есть "when" в JBehave, который при определенных обстоятельствах должен выдавать исключение.Однако я не могу найти никакой документации о том, как с этим справиться.Вот мой сценарий:

дается игра с 6 существующими ставками, а максимальные ставки в игре равны 6 когда пользователь делает ставку

then не существует, так как я хочу, чтобы при размещении ставки пользователем возникало исключение.

Имейте в виду, я не всегда хочу знать, когда создавать исключение.Например.когда существующие ставки меньше максимальных.В таком случае, я хочу сделать некоторые гарантии в "потом".

Это было полезно?

Решение

Детали реализации и "Компьютерная обработка" не относятся к Сценариям


Мое понимание BDD заключается в том, что это заинтересованная сторона-целенаправленный, позволяющий нетехнический люди, которые пишут то, что должна делать система, используя (более или менее) естественный язык, таким образом, чтобы разработчики могли писать код для:

Он расширяет 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."

Другие советы

Поскольку ответов пока нет, я попробую.Способ, которым я делаю это, заключается в сохранении исключения как части внутреннего состояния реализации шагов:

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
  }

}

У меня это хорошо работает, но требует тщательного управления состоянием.

Мы использовали шаблон, предложенный Нильсом Влокой, очень корректный ответ, фиксируем исключение в "When", используя try --> catch, а затем проверяем на ожидаемое исключение на шаге "Then".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top