문제

JBehave에는 특정 상황에서 예외가 발생 해야하는 "언제"가 있습니다. 그러나 이것을 처리하는 방법에 대한 문서를 찾을 수 없습니다. 내 시나리오는 다음과 같습니다.

기존 베팅 6 개가있는 게임과 게임의 맥스 베팅은 사용자가 베팅을 할 때 6입니다.

사용자가 내기를 배치 할 때 예외가 발생하기를 원하기 때문에 그렇지 않습니다.

명심하십시오. 나는 언제 항상 예외를 던지는시기를 원하지는 않습니다. 예를 들어 기존 베팅이 Max Bets보다 적을 때. 이 경우, 나는 "그 당시"에서 몇 가지를 보장하고 싶습니다.

도움이 되었습니까?

해결책

구현 세부 사항 및 "컴퓨터"는 시나리오에 속하지 않습니다.


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
  }

}

이것은 나에게 효과적이지만 신중한 주 관리가 필요합니다.

우리는 매우 유효한 답변 인 Nils Wloka가 제안한 패턴을 사용했으며, "Thy -> Catch를 사용한 다음"그런 다음 "단계에서 예상 예외에 대해 검증 할 때 예외를 캡처했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top