Я хочу написать случаи 2 теста для моего класса:Спок: как передать разные экземпляры в where и заставить подсчет ссылок работать?
теста с нормальным вызовом метода
тест с вызовом метода, который бросает RuntimeException
Для этого я создал следующий тест. Но, к сожалению, это не работает: оно заканчивается словами «Слишком мало вызовов», ноль вместо одного.
Почему?
Код:
import spock.lang.Shared
import spock.lang.Specification
class SimpleSpockTest extends Specification {
interface Simple {
void run();
}
@Shared
Simple good = Mock(Simple)
@Shared
Simple bad = Mock(Simple)
def "test invocations"() {
setup:
bad.run() >> { throw new RuntimeException() }
when:
instance.run()
then:
invocations * instance.run()
where:
instance | invocations
good | 1
bad | 1
}
}
PS Кроме того, я хотел бы перейти «общие» экземпляры в креплении «настройки», но я не могу: он не с того, что класс SimpleSpockTest не обладает свойством «хорошо» или "Плохо".
Кажется, что этот тест не имеет смысла вообще. Чего вы пытаетесь достичь? Каков ваш сценарий? – Opal
Opal, это просто упрощенный пример. В реальном тесте я хочу убедиться, что 1) исключения, выполняемые методом run, регистрируются правильно (вот почему мне нужен макет, который генерирует исключения, я могу подсчитать вызовы обработчика исключений) 2) метод run называется правильным числом раз. Этот тест является упрощенным примером, но он не работает. – MiamiBeach