Korzystając z najbardziej podstawowego przykładu z Mockito's examples page, mogę pomyślnie działać w JUnit.Proste Mockito sprawdza prace w JUnit, ale nie Spock
Jednak po uruchomieniu tego samego testu w Spock, nie powiedzie się.
JUnit/wersja Java (ten przechodzi):
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/wersja Groovy (to się nie powiedzie):
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();
}
}
Oto błąd pojawia się, gdy test Spock kończy się niepowodzeniem:
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)
Wszelkie pomysły i sugestie? Bardzo lubię Spocka i Mockito i mam nadzieję, że sprawią, że będą dobrze ze sobą współpracować. Dziękuję Ci bardzo!
Muszę powiedzieć, że starałem się tego uniknąć, ale fałszywe komunikaty o błędach weryfikacji Spoke'a są naprawdę przerażające. –
Dzięki. Wspaniałe komunikaty o błędach są z pewnością znakiem handlowym Mockito. Na szczęście regularnie otrzymuję informację od Szczepana (twórcy Mockito) o tym, jak poprawić komunikaty o błędach Spocka, a przez większość czasu słucham tego, co mówi. :-) –
Wracam do tego po jakimś czasie, ponieważ muszę wyśmiać niektóre komponenty Springa i nadal nie mogę tego zrobić przy pomocy Spocka, i odkryłem, że 'Mockito.verify (udaje). foo (bar) || true' działa dobrze dla mnie i jest rozsądnie czytelny. – chrylis