В проекте Spring Boot 1.5.9 в настоящее время я пытаюсь использовать @WebMvcTest
для запуска теста на одном из моих контроллеров.Обрабатываемый объект имеет аннотацию @JsonDeserializer()
к одному из своих свойств, указывающих на пользовательский класс.Я пытаюсь смоделировать результат вызова deserialize()
в тесте без вызова тела.
Однако при попытке выполнить следующее я получаю сообщение об ошибке NullPointerException в строке внутри *Метод 1006 *, который предполагает, что выполняется фактическое тело метода:
@Autowired
private MockMvc mvc;
@MockBean
private MyDeserializer myDeserializer
[...]
@Test
public void myTestMethod() {
doReturn(myDeserializedValue)
.when(myDeserializer)
.deserialize(
any(JsonParser.class),
any(DeserializationContext.class)
);
this.mvc.perform([...]) // perform mvc call that would invoke myDeserializer
logger.debug("Call complete"); // never gets to this line
}
Я предполагаю, что пользовательский класс десериализатора вызывается (возможно, new
ed вверх) вне знания Spring ApplicationContext.
Есть ли способ смоделировать собственный десериализатор, или мне нужно увеличить этот класс, чтобы использовать полный ApplicationContext через @SpringBootTest
и позволить ему полностью выполнить?