首页 > 解决方案 > RestAssuredMockMvc 请求属性未作为 ArrayList 传递

问题描述

我有一个带有“角色”请求属性的 POST 方法,如下所示

@RequestMapping(method = RequestMethod.POST, value = "/displayRoles")
public String displayRolesView(HttpServletRequest request, Model model, HttpSession session) {

    List<Role> roles = (List<Role>) request.getAttribute("roles");
    //rest of the implementation
}

我尝试使用 RestAssuredMockMvc 编写一个单元测试,它将角色的 ArrayList 作为请求属性传递,如下所示

 List<Role> roles= new ArrayList<>()
 roles = util.getTestRolesArrayListData();

 RestAssuredMockMvc
                .given()
                .auth().none()
                .attribute("roles",roles)
                .sessionAttrs(sessionAttrMap)
                .when()
                .post("/displayRoles")
                .then()
                .statusCode(200);

请注意,util.getTestRolesArrayListData() 是我用来获取 Roles.java 的 ArrayList 的测试 util 方法。

当我运行测试时,请求具有属性“roles”但作为字符串值而不是作为 Role.java 的 ArrayList 这会引发错误 "Request processing failed; nested exception is java.lang.ClassCastException: java.base/java.lang.String cannot be cast to java.base/java.util.List".

但是当我运行实际程序并对其进行调试时,它会收到一个角色的 ArrayList 并且没有错误。

我还尝试.attributes(requestAttrMap)将 requestAttrMap 作为“HashMap<String, Object>()”,但也没有运气。

谁能帮我这个。TIA

标签: javaunit-testingspring-mvcjunitrest-assured

解决方案


推荐阅读