Spock + весенний загрузочный веб - получить сообщение об исключении - PullRequest
0 голосов
/ 21 мая 2019

Итак, я использую пружинную загрузочную сеть и хочу проверить этот метод:

private void testException(HotelTvApp app) {
    throw new InternalServerException("Test message");
}

Возвращение пользовательского исключения:

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public class InternalServerException extends RuntimeException {
    public InternalServerException(String message) {
        super(message);
    }
}

Контроллер, который вызывает этот метод, возвращает следующееДанные JSON:

{
  "timestamp": 1558423837560,
  "status": 500,
  "error": "Internal Server Error",
  "message": "Test message",
  "path": "/api/v1/test"
}

Я хочу написать тест, который проверит правильность сообщения об исключении.Я пробовал это:

def "createRoom() should return 500 if trying to create room with already existing number"() {
    given:
    def uriRequest = UriComponentsBuilder.fromPath("/api/v1/test")

    when:
    def perform = mvc.perform(get(uriRequest.toUriString()))

    then:
    perform.andExpect(status().isInternalServerError())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
            .andExpect(jsonPath('$.message', is("Test message")))
}

Но я получаю это исключение: Caused by: java.lang.AssertionError: Content type not set

Как я могу проверить сообщение об исключении здесь?

1 Ответ

1 голос
/ 21 мая 2019

Вы можете явно установить contentType как показано ниже

@ExceptionHandler(OrgNotFoundException.class)
public ResponseEntity<String> exceptionHandler(final Exception ex) {
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).contentType(MediaType.APPLICATION_JSON)
            .body("Error");
}
...