سؤال

لدي "عندما" في jbehave والتي في ظل ظروف معينة يجب أن ترمي استثناء. لا أستطيع العثور على أي وثائق، ومع ذلك، حول كيفية التعامل مع هذا. هنا هو سيناريو الخاص بي:

بالنظر إلى لعبة مع 6 رهانات حالية ومقدسة اللعبة هي 6 عندما يضع المستخدم رهان

لا يوجد ذلك، لأنني أريد استثناء ألقيت عندما يضع المستخدم الرهان.

ضع في اعتبارك، لا أريد دائما متى رمي استثناء. على سبيل المثال عندما تكون الرهانات الحالية أقل من حددي الرهانات. في هذه الحالة، أريد أن أفعل بعضا ضمان في "ثم".

هل كانت مفيدة؟

المحلول

تفاصيل التنفيذ و "الكمبيوتر - ESE" لا تنتمي إلى سيناريوهات


فهمي ل BDD هو أنه هو أصحاب المصلحة-Focused، السماح غير تقنية الناس يكتبون ما يفترض أن يفعله النظام، وذلك باستخدام لغة طبيعية (أكثر أو أقل)، بطريقة يمكن للمطورين كود عن:

يمتد 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
  }

}

هذا يعمل بشكل جيد بالنسبة لي، ولكنه يتطلب إدارة حالة دقيقة.

لقد استخدمنا النمط الذي اقترحه نيلز Wloka، إجابة صالحة للغاية، والتقاط الاستثناء في "عند" استخدام TRY -> Catch ثم التحقق من صحة الاستثناء المتوقع في "ثم" خطوة "ثم".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top