gpt4 book ai didi

java - 如何用Java重写ModelAndView的集成测试

转载 作者:行者123 更新时间:2023-12-02 08:48:02 25 4
gpt4 key购买 nike

我有那个 Controller

@GetMapping("/popular")
public List<User> getPopularUsers() {
return handler.getPopularUsers();
}

并对其进行正确的集成测试:

mockMvc.perform(get("/popular"))
.andExpect(status().isOk())
.andExpect(jsonPath("[0].userId").value(372152))
.andExpect(jsonPath("[1].userId").value(398729));

现在我更改了 Controller ,它返回 ModelAndView 而不是 List:

@GetMapping("/popular")
public ModelAndView getPopularUsers(Map<String, Object> map) {
List<User> popularUsers = handler.getPopularUsers();
map.put("users", popularUsers);
return new ModelAndView("popular-users", map);
}

有人可以告诉我如何重写新 Controller 的测试吗?我找到了一些使用 hamcrest 库的示例,但我真的不明白如何从列表中获取一些值

最佳答案

为了检查 ModelAndView 情况,Spring MVC Test 有几个 MVC 匹配器,例如 ModelResultMatchers 和 ViewResultMatchers

如果您想检查列表中的某些值,可以使用方法 public <T> ResultMatcher attribute(String name, Matcher<T> matcher)来自 ModelResultMatchers。

前面的检查可以这样重写:

.andExpect(model().attribute("users",hasItem(hasProperty("id", equalTo(372152)))));
.andExpect(model().attribute("users",hasItem(hasProperty("id", equalTo(398729)))));

此外,您还可以检查 View ,此情况的检查可能如下所示:

.andExpect(view().name("popular-users"))

可以找到所有 MockMvcResultMatchers 的完整列表 here

可以找到 ModelResultMatchers 所有可能方法的完整列表 here

可以找到 ViewResultMatchers 所有可能方法的完整列表 here

关于java - 如何用Java重写ModelAndView的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com