Не получается с помощью 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


Ответы (0 шт):