Java: Spock obliga a fallar la prueba en invocación de burla no registrada.
Tengo código Java y una prueba escrita en groovy spock. Normalmente, la prueba sigue este patrón:
Mi muestra de código Java
public User findUser(String id){
return userRepo.findById(id);
}
mi muestra de prueba
def “Mi prueba”(){
given:
String id = “muestra”
and:
1 * userRepoMock.findById(id) >> testUser
when:
User user = userServiceUnderTest.findUser(id);
then:
user == testUser
}
donde “and” contiene una simulación con un recuento de invocaciones.
Ahora imagina que alguien agregó otra invocación al método en el futuro, como:
public User findUser(String id){
anotherRepo.removeTypeById(id);
return userRepo.findById(id);
}
Incluso con este cambio de código, la prueba anterior pasará sin ninguna modificación. ¿Cómo puedo decirle a Spock que falle en una invocación simulada no registrada? En este caso, “anotherRepo.removeTypeById(id);”. Quiero que si alguien agrega otra invocación, se vea obligado a actualizar la prueba correctamente.
davy.ai
Puede usar la anotación
@Unroll
para asegurarse de que se registren todas las invocaciones adicionales en la prueba. Esta anotación hará que Spock genere un caso de prueba separado para cada invocación y fallará si alguna de las invocaciones no se registra. Por ejemplo:Esto asegurará que se registren todas las invocaciones adicionales en la prueba, y fallará si alguna de las invocaciones no se registra.