Контроллер
@RequestMapping(
value = "api/message/{id}",
method = RequestMethod.DELETE)
public ResponseEntity<?> deleteMessage(@PathVariable Long id) {
messageService.delete(id);
return new ResponseEntity<>(HttpStatus.OK);
}
Нужно проверить на исключение если запросить удаление несуществующего id.
Возвращает
{
"timestamp": 1483566196066,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.EmptyResultDataAccessException",
"message": "No class com.sttech.springrest.model.Message entity with id 1000 exists!",
"path": "/api/message/1000"
}
Тест метод
@Test(expected = EmptyResultDataAccessException.class)
public void deleteMessageIfNotFoundThenException() {
messageController.deleteMessage(2L);
}
Возвращает ошибку
java.lang.AssertionError: Expected exception: org.springframework.dao.EmptyResultDataAccessException
Если так:
@Test(expected = EmptyResultDataAccessException.class)
public void deleteMessageIfNotFoundThenException1() {
when(messageController.deleteMessage(2L));
then(caughtException())
.isInstanceOf(EmptyResultDataAccessException.class)
.hasMessageContaining("entity with id 2 exists!");
}
Возвращает ошибку
java.lang.Exception: Unexpected exception, expected<org.springframework.dao.EmptyResultDataAccessException> but was<java.lang.AssertionError>
Вообще это исключение надо тестировать в контроллере?
Тестировать надо только, если есть поведение. В ваше случае можете проверить, что контроллер вызвал у сервиса/репозитории правильный метод и вернул правильный результат. Я бы исключение не тестировал, но если вы хотите, то можно вот так
@Test(expected = EmptyResultDataAccessException.class)
public void deleteMessageIfNotFoundThenException1() {
when(messageService.delete(2L)).thenThrow(new EmptyResultDataAccessException());
messageController.deleteMessage(2L);
}
Если вы делаете REST сервис, то операция DELETE должна быть idempotent, т.е. состояние системы не меняется, даже если метод был вызван несколько раз (N>0) подряд.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Коллеги, спасите, дедлайн уже близкоРабота встала
Необходимо с помощью библиотеки для JAVA iText 7 изменить Watemark (водный знак) на первой странице pdf файла, то есть имеется готовый pdf и в нем есть...