Java – use mockmvc to get the HttpServletRequest attribute
•
Java
I have a very simple controller defined in this way:
@RequestMapping(value = "/api/test",method = RequestMethod.GET,produces = "application/json") public @ResponseBody Object getObject(HttpServletRequest req,HttpServletResponse res) { Object userId = req.getAttribute("userId"); if (userId == null){ res.setStatus(HttpStatus.BAD_REQUEST.value()); } [....] }
I tried to use the mockmvc call in many different ways, but I couldn't provide the attribute "userid"
For example, with it, it doesn't work:
MockHttpSession mockHttpSession = new MockHttpSession(); mockHttpSession.setAttribute("userId","TESTUSER"); mockmvc.perform(get("/api/test").session(mockHttpSession)).andExpect(status().is(200)).andReturn();
I tried this too, but I didn't succeed:
MvcResult result = mockmvc.perform(get("/api/test").with(new RequestPostProcessor() { public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) { request.setParameter("userId","testUserId"); request.setRemoteUser("TESTUSER"); return request; } })).andExpect(status().is(200)).andReturn();
In this case, I can set remoteuser, but I cannot set attributes mapping on HttpServletRequest
Any clues?
Solution
You can add request attributes by calling requestattr ^ ^
mockmvc.perform(get("/api/test").requestAttr("userId","testUserId")...
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码