操作很简单,只需要一个对象:MockHttpSession。
在每次构建请求的时候把session附加进去就行了,下面是示例代码
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class BlackCompanyWebApiTests {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
private MockHttpSession session;// 1.定义一个变量保存session
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
session = new MockHttpSession(); //2.初始化
}
@Test
public void test() throws Exception {
// 登陆
MockHttpServletRequestBuilder loginRequestBuilder = MockMvcRequestBuilders.post("/auth/login")
.param("username", "test")
.param("password", "123456")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON)
.session(session);//3.当某个请求需要session时,直接在构造器中绑定需要的session
mockMvc.perform(loginRequestBuilder)
//.andExpect(jsonPath("$.code").value("200"))//登陆成功
;
// 其他操作
MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/other-api")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON)
.session(session);// 4.需要时,绑定session
mockMvc.perform(requestBuilder)
.andDo(result -> {
System.out.println(result.getResponse().getContentAsString());
})
}
}