Есть ли способ использовать утверждения AssertJ с помощью Spring MVC Test?
Я использую AssertJ в течение некоторого времени в своих проектах. Недавно я начал использовать Spring MVC Test для тестирования контроллеров Spring MVC.
Но я не понимаю, как использовать AssertJ. Все примеры, которые я вижу в Интернете, используют Hamcrest с помощью теста Spring MVC.
Ниже приведен пример использования API Hamcrest.
mockMvc
.perform(get("/user?operation=userList"))
.andExpect(status().isOk())
.andExpect(model().attribute(UserController.MODEL_ATTRIBUTE_USER_LIST, userList))
.andExpect(view().name(UserController.VIEW_USER_LIST))
.andExpect(model().attribute(UserController.MODEL_ATTRIBUTE_USER_LIST, hasSize(2)))
.andExpect(model().attribute(UserController.MODEL_ATTRIBUTE_USER_LIST, hasItem(
allOf(
hasProperty("id", is(1L)),
hasProperty("description", is("Lorem ipsum")),
hasProperty("title", is("Foo"))
)
)))
.andExpect(model().attribute(UserController.MODEL_ATTRIBUTE_USER_LIST, hasItem(
allOf(
hasProperty("id", is(2L)),
hasProperty("description", is("Lorem ipsum")),
hasProperty("title", is("Bar"))
)
)));
Ответы
Ответ 1
Обновить
Если вы хотите проголосовать за включение поддержки утверждений MockMvc
, обратитесь к соответствующей проблеме Spring JIRA: SPR-16637.
Вообще говоря, вы можете выбрать любую платформу утверждений, которая вам нравится при тестировании в Spring.
Однако конкретный сценарий, который вы описываете, включает в себя API среды Spring MVC Test. Рассматриваемые методы предназначены для использования с API Hamcrest Matcher
. Поэтому невозможно использовать AssertJ в этих вызовах методов.
С Уважением,
Сэм (автор Spring TestContext Framework)
Ответ 2
Недавно возникла проблема в проекте Spring Boot, чтобы обсудить добавление поддержки утверждений AssertJ с помощью MockMvc, это может стоить следя за ним. Вы можете посмотреть эту проблему здесь: https://github.com/spring-projects/spring-boot/issues/5729
Похоже, что начальная концепция созданная Филом Веббом, включает в себя завершение MockMvc для поддержки утверждений AssertJ.
Ответ 3
Я собрал библиотеку, которая предлагает утверждения AssertJ для MockMvc
но также и для ResponseEntity
(возвращается TestRestTemplate
): https://github.com/ngeor/yak4j-spring-test-utils