У меня есть приложение Spring Boot
, и мне нужно убедиться, что в случае сбоя запроса (отличается от 200
) система регистрирует код состояния и сообщение. Пока я не могу найти способ проверить logger
. Есть ли способ сделать это с Mockito
?
MyControllerTest
код:
@RunWith(MockitoJUnitRunner.class)
@TestPropertySource(locations = "classpath:application-test.yml")
public class MyControllerTest {
private MockMvc mockMvc;
@Mock
private RestTemplate localRestTemplate;
@InjectMocks
private MyController myController;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
}
@Test
public void test() throws Exception {
given(localRestTemplate.getForEntity("/test", String.class))
.willReturn(new ResponseEntity<>("Unsupported media type", HttpStatus.UNSUPPORTED_MEDIA_TYPE));
mockMvc.perform(get(MY_URL))
.andExpect(status().isOk());
}
}
MyController
код:
@RestController
@RequestMapping(value = "/my/url")
public class MyController {
protected final static Logger logger = LoggerFactory.getLogger(MyController.class);
private final RestTemplate localRestTemplate;
@Autowired
public MyController(RestTemplate localRestTemplate) {
this.localRestTemplate = localRestTemplate;
}
@Scheduled(cron = "-")
@GetMapping(path="/report")
public void getReport() {
try {
localRestTemplate
.getForEntity("/test", String.class);
} catch (RestClientException e) {
logger.error("Couldn't trigger report generation!", e);
}
}
}
Я сделал исследования иОдно из возможных решений - через Spy
или через изменение модификаторов на public
. Оба решения не применимы к моей текущей конфигурации.
Есть ли что-то еще, что я пропускаю, что может помочь мне проверить logger
контент или, по крайней мере, если logger
был вызван?