将模型属性添加到 spring MockMvc 调用

Pat*_*ler 2 testing spring modelattribute mockmvc

我正在为一个简单的控制器编写测试。

控制器检查模型属性“ADDED_OBJECT”是否存在,并在缺少模型属性时返回成功页面和错误页面。测试错误路径没问题,但不知道如何触发成功路径,通常在成功的POST(Post/Redirect/Get)模式后执行。是否可以将 modelattribute 添加到 mockMvc 调用?

控制器:

@GetMapping("/added")
public String addedContract(Model model) {
    if (!model.containsAttribute(ADDED_OBJECT)) {
        return ERROR_400;
    }
    return "added";
}
Run Code Online (Sandbox Code Playgroud)

测试:

@Test
public void added() throws Exception {
    mockMvc.perform(get("/added"))
            .andExpect(status().isOk())
            .andExpect(content().string(not(containsString("400"))));
}
Run Code Online (Sandbox Code Playgroud)

谢谢

pvp*_*ran 7

最简单的方法是像这样设置 flashAttribute

 mockMvc.perform(get("/added").flashAttr("ADDED_OBJECT", "SomeObject"))
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以控制传递给控制器​​中模型对象的内容,并相应地为各种用例设计测试。