51Testing软件测试论坛

标题: MockMvc 怎么集成测试? [打印本页]

作者: 测试积点老人    时间: 2018-12-19 16:14
标题: MockMvc 怎么集成测试?
  1. @Before
  2.     public void initTests() throws Exception {
  3.         mvc = MockMvcBuilders.webAppContextSetup(context)
  4.                  .addFilters(springSecurityFilterChain)
  5.                 .build();
  6.         
  7.     }
  8.    
  9.    
  10. @Test

  11.     public void testLogin() throws Exception {
  12.         mvc.perform(post("/login").param("username", "15812345678").param("password", "123456"))
  13.         .andDo(print())
  14.         .andExpect(MockMvcResultMatchers.redirectedUrl("/api/user/list"));
  15.     }
复制代码

流程是:

现在问题是redirectedUrl的action ,我要加入参数进去,才能完成/api/user/list的请求。但是一直都302,说明登陆没通过,求救大神帮帮解答解答呢?

今天解决了。思路时 在第二个请求中放入session 。这样就不会出现被登陆请求拦截问题了。到此位置,mockmvc ,集成完一个业务流程的测试,爽啊


代码如下

  1. @Before
  2.     public void initTests() throws Exception {
  3.         mvc = MockMvcBuilders.webAppContextSetup(context).addFilters(springSecurityFilterChain).build();
  4.         session = (MockHttpSession) mvc.perform(post("/login")
  5.                 .param("username", "15812345678")
  6.                 .param("password","e10adc3949ba59abbe56e057f20f883e"))
  7.                 .andReturn().getRequest().getSession();;
  8.     }
  9.    
  10.    
  11.    
  12.     @Test
  13.     public void testDownSummary() throws Exception {
  14.         List<LoanProgress> loanProgress = new ArrayList<>();
  15.         LoanProgress l1 = new LoanProgress();
  16.         l1.setApplyNo("RZ000001");
  17.         l1.setRateHighest(0.12);
  18.         LoanProgress l2 = new LoanProgress();
  19.         l2.setApplyNo("RZ000002");
  20.         l2.setRateHighest(0.12);
  21.         loanProgress.add(l1);
  22.         loanProgress.add(l2);
  23.         
  24.         String jsonArray = JSONObject.toJSONString(loanProgress);
  25.         logger.debug(jsonArray);
  26.         mvc.perform(get("/api/loanProgress/accept")
  27.                 .session(session)
  28.                 .contentType(MediaType.APPLICATION_JSON)
  29.                 .content(jsonArray))
  30.                 .andExpect(status().isOk())
  31.                 .andDo(print());
  32.     }
复制代码







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2