Есть ли способ использовать утверждения 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