Spring Batch: как преобразовать stepContext.getJobExecutionContext () в пользовательскую реализацию карты в mockito, когда тогда - PullRequest
0 голосов
/ 05 мая 2020

Этот вопрос относится к Это . Почему я задаю здесь и не обновляю вопрос, потому что это может быть полезный вопрос и не связанный с предыдущим, который я задал. у меня есть такая карта: TreeMap<String, Map<Integer, Set<Student>>>

, и я хочу преобразовать значение по умолчанию chunkContext.getStepContext().getJobExecutionContext(), которое равно Map<String, Object>, в TreeMap<String, Map<Integer, Set<Student>>> в моем классе Test.

Существующая реализация:

Mockito.when(chunkContext.getStepContext().getJobExecutionContext().get("keyOfStudentMap"))
            .thenReturn((TreeMap<String, Map<Integer, Set<Student>>>)studentMap);

при наведении курсора на getJobExecutionContext() отображается Map<String, Object>, и я хочу изменить его так, чтобы это можно было изменить на TreeMap<String, Map<Integer, Set<Student>>>

Извините, если что-то неясно. Я могу обновить вопрос на основе ваших комментариев. :)

1 Ответ

0 голосов
/ 06 мая 2020

Вместо того, чтобы делать:

chunkContext.getStepContext().getJobExecutionContext()

, вам нужно использовать:

chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext()

, который возвращает экземпляр ExecutionContext.

Теперь все, что вы положили как введите ExecutionContext, вы получите тот же, что и при вызове get, и, следовательно, вы можете привести его к исходному типу (TreeMap<String, Map<Integer, Set<Student>>> в вашем случае).

...