SpringBootTest MockMVC绑定session(需要登陆的接口)

本文介绍了如何在SpringBootTest中使用MockHttpSession模拟用户登录状态,以便测试需要登录的接口。通过在每次请求时附加session对象,可以实现对需要session的接口的正确调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作很简单,只需要一个对象: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());
                })
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值