2014-09-11 3 views
0

Почему следующий тест завершился неудачей с «слишком небольшим количеством вызовов» вместо фактического исключения, которое выбрасывается внутри метода до того, как вызывается метод издевательства?Тест взаимодействия с Spock имеет преимущество перед исключениями

Есть ли способ изменить это поведение?

@Test 
def "Should Create"() { 
    when: "We do stuff" 
    this.someStuff.do() 

    then: "Should not get exception" 
    notThrown(Exception) 

    and: "Should send mail" 
    1 * mailSession.send(_, _, _, _, _, _, _) 
} 
+0

Слишком мало информации, чтобы диагностировать его. – Opal

ответ

2

Вы обнаружили ошибку. Пожалуйста, напишите номер на http://issues.spockframework.org.

PS: Вместо notThrown(Exception), чаще всего используется noExceptionThrown(). Вместо 1 * mailSession.send(_, _, _, _, _, _, _), чаще всего используется 1 * mailSession.send(*_). @Test - аннотация JUnit, которая не влияет на Spock.

0

Каков точный тип исключения бросили в do() метод?

Возможно, вы захотите использовать noExceptionThrown() Спосовый метод вместо notThrown(Exception).

+0

Не уверен сейчас, но я думаю, что тип исключения не имеет значения. Дело в том, что когда генерируется исключение, 'mailSession.send' не может быть вызвано так, что обе части« then »и« and »применимы, но« Должна отправлять почту »имеет приоритет. Если я поставлю сообщение «Отправлять почту», часть «Не следует исключать» обрабатывается правильно. –

+0

Не хватает подробностей, чтобы рассказать, честно говоря. – topr

Смежные вопросы