Как перехватить сообщения logger.error при модульном тестировании контроллера с MockMvc? - PullRequest
1 голос
/ 14 октября 2019

У меня есть приложение 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 был вызван?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...