Для простоты давайте рассмотрим очень простой класс:Получение «Слишком мало вызовов» на модульного тестирования с Спока
public class TestingClass {
public void method1(){
System.out.println("Running method 1");
method2();
}
public void method2(){
System.out.println("Running method 2");
}
}
Сейчас я пишу простой тест, который проверяя, что, когда мы вызываем method1(), method2() вызывается:
class TestingClassSpec extends Specification {
void "method2() is invoked by method1()"() {
given:
def tesingClass = new TestingClass()
when:
tesingClass.method1()
then:
1 * tesingClass.method2()
}
}
, выполнив этот тест, я получаю следующее сообщение об ошибке:
Running method 1 Running method 2
Too few invocations for:
1 * tesingClass.method2() (0 invocations)
Почему Я получаю эту ошибку? Печатный журнал показывает, что метод method2() был вызван.
Здравствуйте Opal, спасибо за ваш ответ. Да, я знаю, что могу использовать Spy, и он работает отлично. Я хочу понять, что такое логика, что этот код с реальным объектом не работает. –
@AramAslanyan это не сработает, потому что вам нужно сфокусировать вызовы на любом уровне - чтобы проверить вызовы, вы должны использовать шпионы или издевки, вот как работает тестирование взаимодействия. Вам нужно каким-то образом обернуть реальный объект с помощью предоставленных инструментов. Это ясно? – Opal