Не получается с помощью mockito подменить вызов метода в SpringBatch
Пытаюсь с помощью mockito подменить вызов метода в SpringBatch. Код сильно упростил и убрал лишнее, чтобы уменьшить его, если чего не хватает пишите, я добавлю.
Файл настроек SpringBatch
@Configuration
@EnableBatchProcessing
public class ListBatchConfig {
@Bean
public Job jobListBath(JobBuilderFactory jobBuilderFactory,
StepBuilderFactory stepBuilderFactory,
ItemReader<Student> itemReaderListBath,
ItemProcessor<Student, Marksheet> processorListBath,
ItemWriter<Marksheet> itemWriterListBath
) {
Step step = stepBuilderFactory.get("List-load")
.<Student, Marksheet>chunk(3)
.reader(itemReaderListBath)
.processor(processorListBath)
.writer(itemWriterListBath)
.build();
return jobBuilderFactory.get("L-Load")
.incrementer(new RunIdIncrementer())
.start(step)
.build();
}
@Bean
public ItemReader<Emaill> itemReaderListBath() {
return new ListItemReader();
}
...
ItemReader описан в отдельном классе ListItemReader
@Component
@Slf4j
public class ListItemReader implements ItemReader<Student> {
@Autowired
private CalService calService ;
DataAtributes dataAtributes;
...
@Override
public Student read() {
//Тут вызывается метод сервиса, который необходимо подменить
dataAtributes = new DataAtributes(1,"test");
Integer val = calService.addAttr(dataAtributes);
...
}
Вот сам сервис
@Service
public class CalService {
public int addI(int input1) {
return 0;
}
public Integer addAttr(DataAtributes attr) {
return 0;
}
}
в этом сервисе происходит запуск Job
@Service
public class StartJob {
@Autowired
JobLauncher jobLauncher;
@Autowired
Job jobDeveloper;
public void launchJob() throws Exception {
...
JobExecution jobExecution = jobLauncher.run(jobDeveloper, params);
и сам класс тестирования
@SpringBootTest
public class CaclServisTest {
@Mock
CalService calcService;
@InjectMocks
StartJob
@Autowired
StartJob startJob;
@Test
void add() {
DataAtributes dataAtributes = new DataAtributes(1,"test");
when(calcService.addAttr(dataAtributes)).thenReturn(57);
startJob.launchJob();
}
}
В итоге вызывается родной метод, а не подмененный. Я не понимаю не какой сервис надо поставить @InjectMocks