Получите сообщение детализации тела из throwable и подтвердите, что это точное сообщение было возвращено при возникновении исключения - PullRequest
0 голосов
/ 14 октября 2019

У меня есть приложение Spring, которое вызывает внешние API (у меня нет контроля над этим внешним проектом и его кодом). Я пишу интеграционные тесты в своем весеннем проекте. Тест вызывает эти API. Один из API выдает исключение для определенных входных данных:

В тестах я ловлю исключение как:

Throwable throwable = catchThrowable(() -> TestHelper.createProduct(...));

assertThat(throwable)
  .isInstanceOf(CustomException.class)
  .hasMessageContaining(PRODUCT_CREATE_ERROR)
  .hasCause(null);

Я попытался напечатать throwable.getMessage(), и это то, что он печатает:

An internal error occurred: status code: [400], status text: [Bad Request], 
headers: [[Transfer-Encoding:"chunked", Content-Type:"application/json; charset=utf-8", Server:"Kestrel", X-Powered-By:"ASP.NET", Date:"Fri, 10 Sep 2017 22:38:37 GMT"]], 
body: [{"status":400,"detail":"Cannot create product."}]

Я хочу иметь возможность перехватить сообщение «Не удается создать продукт», я вижу в сообщении выше и использовать его, чтобы подтвердить, что это сообщение об ошибке было возвращено, что-то вроде:

throwable.
.hasMessageContaining(capturedMessage)

Есть ли способ получить это сообщение «Невозможно создать продукт», я вижу в деталях тела выше (из исключения. GetMessage)

Если я сделаю что-то вроде: .hasMessageContained («Внутреннийпроизошла ошибка "), это работает, но я также хочу иметь возможность сделать что-то подобное для ошибочного текста" Не удается создать продукт ". Как я могу получить этот конкретный текст и сказать, что эта ошибка была возвращена?

1 Ответ

0 голосов
/ 15 октября 2019

Попробуйте hasStackTraceContaining, который должен выполнить эту работу.

...