我試圖對我的Spring應用程序進行單元測試。 使用Spring-Security,我有麻煩嘲笑SecurityContext爲了單元測試我的控制器。在請求範圍內使用工廠方法自動裝配
我發現以下問題:Unit testing with Spring Security
而且我想有「社區維基」的回答(第2個答案在這個時候)我的web應用程序的工作。
我主要使用註解驅動DEVELOPPEMENT的話,我有以下幾點:
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似乎是空的。
我也看了在這個問題上沒有找到的東西,符合我的需要:problem in Spring session scope bean with AOP
這是我的第一個春天web應用程序,請不要苛刻。 :)
你是對的,它現在正在工作。非常感謝 ! :) –