groovymock framework java groovy junit mockito spock

java - framework - groovymock



Simple Mockito verifica trabajos en JUnit pero no Spock (1)

Usando el ejemplo más básico de la página de ejemplos de Mockito , puedo ejecutar exitosamente en JUnit.

Sin embargo, cuando ejecuto la misma prueba en Spock, falla.

Versión JUnit / Java (esto pasa):

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(); } }

Versión de Spock / Groovy (esto falla):

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(); } }

Aquí está el error que recibo cuando falla la prueba de Spock:

Condition not satisfied: verify(mockedList).add("one") | | | | | false | $java.util.List$$EnhancerByMockitoWithCGLIB$$172e393a@613043d2 (renderer threw NullPointerException) $java.util.List$$EnhancerByMockitoWithCGLIB$$172e393a@613043d2 (renderer threw NullPointerException) at SimpleSpockTest.Basic Mock Test(SimpleSpockTest.groovy:25)

¿Alguna idea o sugerencia? Realmente me gustan Spock y Mockito y espero que funcionen bien juntos. ¡Muchas gracias!


En términos generales, un bloque then solo puede contener aserciones en forma de expresiones booleanas. Una expresión de verificación de Mockito no se ajusta a este contrato, ya que devolverá un valor false ( null , false , 0 ) cuando pase, lo que se interpreta como una afirmación fallida de Spock.

Para resolver este problema, puede escribir un método auxiliar que se ajuste a las expresiones de verificación y siempre devuelva true , o puede usar el marco de burla incorporado de Spock en lugar de Mockito.