решение с использованием Spock
Это делается с использованием [@SpringSpy] [2].
Сначала мы аннотируем поле с помощью пружинного компонента, который мы хотим обернуть в шпионский объект.Например:
@SpringSpy
private CarValidator carValidator;
, затем в нашем тесте, в части then
мы определяем, как мы хотим переопределить метод из bean / spy:
then:
3 * carValidator.validateIssueDates(_) >> null
Решение с использованиемMockito
(в качестве дополнительного подхода, это не связано с решением спока)
Я получил это довольно легко, используя spy
в Mockito
.Несмотря на множество проб (и ошибок) с spock
spy
, он просто не хочет работать.Если я получу это, я отправлю это здесь.Пока я могу поделиться только Mockito
решением:
@Profile("test")
@Configuration
public class BeanConfig {
@Bean
@Primary
public CarValidator getCarValidatorSpy(CarValidator validator) {
CarValidator carValidatorSpy = Mockito.spy(validator);
Mockito.doNothing().when(carValidatorSpy).validateIssueDates(Mockito.any(CarDto.class));
return carValidatorSpy;
}
}
Вот и все.Кажется довольно простым.