使用 Spring 的 WebApplicationContext JUnit 框架 - 如何检查模型中对象集的字段值?

Using Spring's WebApplicationContext JUnit framework - How do I check the field value of an object set in my model?

我正在使用 Spring 3.2.11.RELEASE 和 JUnit 4.11。在我的单元测试中,如何检查模型中包含的对象字段的值?在我的单元测试中,我有这样的电话:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class MyControllerTests 
{

@Autowired 
private WebApplicationContext wac;

private MockMvc mockMvc;
…
@Test
public final void doMyTest() {
    …
    mockMvc.perform(get("/admin/mypage/search”) 
                    .param(“param1”, param1)
                    .param(“param2”, param2))
        .andExpect(status().isOk())
        .andExpect(model().attribute(C”modelName”, ???))
        .andExpect(view().name(“mypage/search"));

在我的控制器中,我有这样的代码

   final MyForm myForm = new MyForm();
   …
   model.addAttribute(“modelName”, myForm);

但是如何使用上面的 Spring JUnit 测试框架检查 myForm.getMyField1() 是否等于某个值?

要评估单个对象 属性 尝试使用 Hamcrest 匹配器来匹配您的对象属性

mockMvc.perform(get("/admin/mypage/search”) 
                .param(“param1”, param1)
                .param(“param2”, param2))
                .andExpect(status().isOk())
                .andExpect(view().name("mypage/search"))
                .andExpect(model().attribute("modelName", hasProperty("myField1", equalTo("value"))));

mockMvc.perform(get("/admin/mypage/search”) 
                .param(“param1”, param1)
                .param(“param2”, param2))
                .andExpect(status().isOk())
                .andExpect(view().name("mypage/search"))
                .andExpect(model().attribute("modelName", hasProperty("myField1", is("value"))));