我正在使用Spring Boot 1.4.2,并且是Spring Boot的新手。我有一个身份验证筛选器,用于在用户登录时设置当前用户信息。在控制器的建议中,我进行了调用以获取当前userId,如下所示:
public static String getCurrentUserToken(){
return ((AuthenticatedUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUserId();
}
Run Code Online (Sandbox Code Playgroud)
这是我的自定义AuthenticatedUser:
public class AuthenticatedUser implements Serializable {
private final String userName;
private final String userId;
private final String sessionId;
public AuthenticatedUser(String userName, String userId, String sessionId) {
super();
this.userName = userName;
this.userId = userId;
this.sessionId = sessionId;
}
public String getUserName() {
return userName;
}
public String getUserId() {
return userId;
}
public String getSessionId() {
return sessionId;
}
Run Code Online (Sandbox Code Playgroud)
}
一切正常。但是,该筛选器在集成测试中不起作用,我需要模拟当前用户。我搜索了很多关于如何模拟用户的内容,但没有一个对我有帮助。我终于找到了可能与我想要的指南接近的指南:https : //aggarwalarpit.wordpress.com/2017/05/17/mocking-spring-security-context-for-unit-testing/ 以下是我的测试课程遵循该准则:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = …Run Code Online (Sandbox Code Playgroud)