Как я могу сравнить объекты ModelAndView в тестировании Junit? - PullRequest
0 голосов
/ 04 июля 2018

В настоящее время тест показывает, что оба возвращаемых объекта одинаковы, но утверждение не выполняется. Есть ли способ сравнить там?

 @Test
    public void test_search() throws Exception {
        TestObject testObject= createTestObject();

        ModelAndView expectedReturn = new ModelAndView("example/test", "testForm", testObject);
        expectedReturn.addObject("testForm", testObject);



        ModelAndView actualReturn = testController.search(testObject);

        assertEquals("Model and View objects do not match", expectedReturn, actualReturn);
    }

1 Ответ

0 голосов
/ 04 июля 2018

Я бы порекомендовал вам написать настоящий Spring MVC Test.

например. как я сделал с весенней загрузкой

@AutoConfigureMockMvc
@SpringBootTest(classes = {YourSpringBootApplication.class})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
@RunWith(SpringRunner.class)
public class RestControllerTest  {

       @Autowired
       private MockMvc mvc;

       @org.junit.Test
       public void test_search() throws Exception {
           TestObject testObject= createTestObject();

           mvc.perform(MockMvcRequestBuilders
            .get("/yourRestEndpointUri"))
            .andExpect(model().size(1))
            .andExpect(model().attribute("testObject", testObject))
            .andExpect(status().isOk());

       }

}

Важно проверить атрибуты модели с помощью метода org.springframework.test.web.servlet.result.ModelResultMatchers.model() (в примере статически импортированного)

...