Я пытаюсь протестировать приложение Spring.Используя Spring-Security, у меня возникают проблемы с имитацией SecurityContext для модульного тестирования моих контроллеров.
Я нашел следующий вопрос: Юнит-тестирование с Spring Security
И я пытаюсь, чтобы ответ "сообщество-вики" (2-й ответ в настоящее время) работал над моим веб-приложением.
В основном я использую разработку на основе аннотаций, тогда у меня есть следующее:
MainController.java
@Controller
public class MainController {
private User currentUser;
@Autowired
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public void setCurrentUser(User currentUser) {
this.currentUser = currentUser;
}
...
}
UserFactory.java
@Component
public class UserFactory {
@Bean
public User getUserDetails() {
Authentication a = SecurityContextHolder.getContext().getAuthentication();
if (a == null) {
return null;
} else {
return (User) a.getPrincipal();
}
}
}
User.java
public class User implements UserDetails {
private long userId;
private String username;
private String password;
private boolean enabled;
private ArrayList<GrantedAuthority> authorities;
public User() {
}
...
}
Проблема заключается в том, что метод getUserDetails () кажетсяникогда не вызываться и UserFactory никогда не используется.(Я пробовал System.out.println и пробовал отладчик)
Но нет ошибки в том, что MainController не был подключен во время выполнения или при любом запросе.
Атрибут currentUser, кажется,alaways null.
Я также просматривал этот вопрос, не найдя чего-то, что отвечает моим потребностям: проблема в компоненте бобов сеанса Spring с AOP
Это мой первый веб-ресурс Springприложение, пожалуйста, не будь резким.:)