Estoy teniendo un problema al ejecutar la prueba de pepino con la primavera de arranque 2.
Tengo dos definiciones pasos y en ambas clases Trato de espiar un objeto con Mockito tratando de capturar el argumento pasado a un método de esta clase.
El punto es que desde pepino sólo permite un contexto de aplicación de configuración de la primavera que he creado una clase abstracta para configurarlo y no tengo uno prolongado de la definición pasos con esta clase.
@ActiveProfiles("INTEGRATION_TEST")
@SpringBootTest
@ContextConfiguration(classes = ServiceApplication.class)
@TestPropertySource(properties =
{"spring.config.location=classpath:application-test.yml"})
public abstract class BaseTestIntegration {}
@Ignore
public class OfferEventsGenerationStep extends BaseTestIntegration {
@Autowired private LoanOfferBatchController loanOfferBatchController;
@SpyBean private SendEventOfferServiceImpl sendEventService;
@Captor private ArgumentCaptor<CreateOfferToUserEvent> createOfferEventCaptor;
@Autowired private GenericWebApplicationContext context;
.........
@Then("^events will be created$")
public void eventsWillBeCreated() throws Throwable {
Mockito.verify(sendEventService, Mockito.times(5)).sendEvent(createOfferEventCaptor.capture());
}
}
@Ignore
public class SecondEventsGenerationStep {
@Autowired private LoanOfferBatchController loanOfferBatchController;
@SpyBean private SendEventSencondServiceImpl sendEventService;
@Captor private ArgumentCaptor<CreateOfferToUserEvent> createOfferEventCaptor;
@Autowired private GenericWebApplicationContext context;
.........
@Then("^events will be created$")
public void eventsWillBeCreated() throws Throwable {
Mockito.verify(sendEventService, Mockito.times(2)).sendEvent(createOfferEventCaptor.capture());
}
}
Y todo funciona bien, excepto que sendEventService solamente es reconocido como un grano de espionaje en la clase que amplía la clase BaseTestIntegration el otro lanza esta excepción:
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to verify() is of type SendEventSencondServiceImpl and is not a mock!
Actualmente, no es posible el uso @MockBean
o @SpyBean
porque cucumber-spring
las definiciones vueltas pasos en los granos y no utiliza el TestContextManager
. Hay un problema con la ayuda de pepino @MockBean-primavera # 1470 . Es en juego si alguien quiere tomar.