Я пытаюсь изучить пакетную обработку и тасклет.
Я пишу тестовый пример для кода тасклета в весенней партии. Я устанавливаю карту в своем тестовом классе и отлаживаю, фактический класс не имеет ключа, который я передаю из моего тестового класса.
MyEventTasklet. java
public class MyEventTasklet implements Tasklet {
public RepeatStatus execute (StepContribution contribution, ChunkContext chunkContext){
TreeMap<String, Map<Integer, Set<Student>>> studentMap = chunkContext.getStepContext().getJobExecutionContext().get("keyOfStudentMap");
}
}
MyEventTaskletTest. java
@RunWith(MockitoJunitRunner.class)
public class MyEventTaskletTest{
@Mock
StepContribution stepContribution;
@Mock
ChunkContext chunkContext;
@Mock
StepContext stepContext;
@InjectMocks
MyEventTasklet myEventTasklet = new MyEventTasklet();
@Test
public void testExecute(){
TreeMap<String, Map<Integer, Set<Student>>> studentMap = new TreeMap<>();
Map<Integer, Set<Student>> m2 = new TreeMap<>();
m2.put(100, createStudentData());
studentMap.put("keyOfStudentMap", m2);
Map<String, Object> map = new TreeMap<>();
map.put("keyOfStudentMap", new Object());
chunkContext = Mockito.mock(ChunkContext.class);
stepContribution = Mockito.mock(StepContribution.class);
stepContext = Mockito.mock(StepContext.class);
Mockito.when(stepContext.getJobExecutionContext()).thenReturn(map);
Mockito.when(chunkContext.getStepContext()).thenReturn(stepContext);
Mockito.when(chunkContext.getStepContext().getJobExecutionContext().get("keyOfStudentMap"))
.thenReturn((TreeMap<String, Map<Integer, Set<Student>>>)studentMap);
// When I am debugging I can see here, the studentMap object which is having something like {keyOfStudentMap={100=[StudentObject]}},
but when I see in actual class it is becoming {100=[StudentObject]}
}
}
Я не уверен, почему это происходит, я что-то делаю не так? Любая помощь будет принята с благодарностью.