Utilizzando l'esempio più semplice da Mockito's examples page, riesco a eseguire correttamente in JUnit.Verifica semplice di Mockito funziona in JUnit ma non in Spock
Tuttavia, quando eseguo lo stesso test in Spock, fallisce.
JUnit/versione di Java (questo passa):
import org.junit.Test;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class SimpleJunitTest
{
@Test
public void basicMockTest()
{
List mockedList = mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
Spock/versione Groovy (questo non funziona):
import static org.mockito.Mockito.mock
import static org.mockito.Mockito.verify
class SimpleSpockTest extends spock.lang.Specification
{
def "Basic Mock Test"()
{
given:
//mock creation
List mockedList = mock(List.class);
when:
//using mock object
mockedList.add("one");
mockedList.clear();
then:
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
Ecco l'errore che ottengo quando il test Spock non riesce:
Condition not satisfied:
verify(mockedList).add("one")
| | |
| | false
| [email protected] (renderer threw
NullPointerException)
[email protected] (renderer threw
NullPointerException)
at SimpleSpockTest.Basic Mock Test(SimpleSpockTest.groovy:25)
Qualche idea o suggerimento? Mi piacciono molto Spock e Mockito e spero di farli lavorare bene insieme. Grazie mille!
Devo dire che cercavo di evitarlo, ma i falsi messaggi di errore di Spoke sui messaggi di verifica sono davvero impressionanti. –
Grazie. I grandi messaggi di errore sono certamente un marchio di fabbrica di Mockito. Fortunatamente, sto ricevendo regolarmente feedback da Szczepan (creatore di Mockito) su come migliorare i messaggi di errore di Spock, e il più delle volte ascolto ciò che dice. :-) –
Tornerò su questo dopo un po ', visto che ho bisogno di prendere in giro alcuni componenti Spring e ancora non riesco a farlo con Spock Mocks, e ho trovato che 'Mockito.verify (mock). foo (bar) || true' funziona bene per me ed è ragionevolmente leggibile. – chrylis