spring集成测试

dy2hfwbg  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(407)

我有一个包含注销端点的spring控制器

@PostMapping("/logout")
public ResponseEntity<Void> logout() {
    var request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
    try {
        request.logout();
        return new ResponseEntity<>(HttpStatus.OK);
    } catch (ServletException e) {
        log.error("Unable to logout");
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

如何使用mockmvc来测试它?
到目前为止,我只有这段代码,但是我不知道如何测试request.logout()是否被调用(它的效果如何?)。

mvc.perform(MockMvcRequestBuilders.post("/logout").principal(principal)).expect(??)
fgw7neuy

fgw7neuy1#

从这篇文章:
使用spring安全测试包,请尝试以下代码:

getMockMvc().perform(get("http://login.com").principal(principal))
        .andExpect(status().isOk()));

或:

getMockMvc().perform(get("http://your-url.com").principal(new UserPrincipal("TEST_USER_ID"))).andExpect(status().isOk()));

相关问题