Per semplicità diamo una classe molto semplice:Ottenere "Troppo pochi invocazioni" a prova di unità con Spock
public class TestingClass {
public void method1(){
System.out.println("Running method 1");
method2();
}
public void method2(){
System.out.println("Running method 2");
}
}
Ora sto scrivendo un semplice test, che verifica che quando invochiamo method1(), method2() viene invocato:
class TestingClassSpec extends Specification {
void "method2() is invoked by method1()"() {
given:
def tesingClass = new TestingClass()
when:
tesingClass.method1()
then:
1 * tesingClass.method2()
}
}
eseguendo questo test, sto ottenendo il seguente errore:
Running method 1 Running method 2
Too few invocations for:
1 * tesingClass.method2() (0 invocations)
Perché Sto ottenendo questo errore? Il registro stampato mostra che method2() è stato richiamato.
Ciao Opal, grazie per la tua risposta. Sì, so che posso usare Spy e funziona perfettamente. Voglio capire qual è la logica che questo codice con oggetto reale non funziona. –
@AramAslanyan non funzionerà perché hai bisogno di spock nelle invocazioni a qualsiasi livello - per verificare le invocazioni devi usare spie o mock, ecco come funziona il test di interazione. È necessario avvolgere un oggetto reale in qualche modo con gli strumenti forniti. È chiaro? – Opal