Ich versuche, einen Feder Batch-Job zu testen, die eine Lese führt (Abrufen von Daten aus einer anderen Anwendung) Verfahren (einfache Berechnung) und schreibt (in die mongodb)Testing Frühjahr Batch-Job stepScope
die Leser @ StepScope
Hier ist das postConstruct der Leseaufgabe.
@PostConstruct
public void init(){
employees.addAll(getListOfEmployeesBy(affectationMotifService.findAllRegistrationNumbers()));
}
public List<EmployeeForSalaryDTO> getListOfEmployeesBy(List<String> registrationNumbers){
LOG.debug("request to get all the employees by registration numbers {}" , registrationNumbers);
return coreResourceFeign.getAllEmployeesForSalaryByRegistrationNumbers(registrationNumbers).getBody();
}
Wenn ich versuche, den Test des Auftrags oder was auch immer Test in der Anwendung zu starten. spring führt immer die init() der Leseaufgabe aus, die den Test nicht besteht, weil ich die coreResourceFeign.getAllEmployeesForSalaryByRegistrationNumbers (registrationNumbers) überspielen muss. Ich kann die Methode nicht verspotten, weil sie vor dem Testbeginn ausgeführt wird.
hier ist der Test
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {SalaryApp.class, SecurityBeanOverrideConfiguration.class})
public class SalaryJobServiceTest {
@Autowired
@InjectMocks
private SalaryJobService salaryJobService;
@Test
public void startJob() throws Exception {
SalaryJobDTO SalaryJobDTO = salaryJobService.start(Collections.emptyList());
Assert.assertNotNull(salaryJobDTO.getId());
}
}
Ich habe keine Ahnung, wie man mit Frühling Batch-Tests befassen. Jede Empfehlung oder Hilfe wird begrüßt.