Spring MockMVC を使用した JUnit テストでは、Spring Security ユーザーとして認証する方法が 2 つあります。@WithMockUser
提供された資格情報を使用してダミー ユーザーを作成し、@WithUserDetails
ユーザー名を取得して、UserDetails
カスタムUserDetailsService
( UserDetailsServiceImpl
) を使用して正しいカスタム実装に解決します。
私の場合、UserDetailsService
データベースからユーザーをロードします。使用したいユーザーは、@Before
テスト スイートのメソッドに挿入されました。
しかし、my ではUserDetailsServiceImpl
ユーザーが見つかりません。
私の では@Before
、次のようにユーザーを挿入します。
User u = new User();
u.setEMail("[email protected]");
u = userRepository.save(u);
そしてUserDetailsServiceImpl
、:
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = this.userRepository.findOneByEMail(username);
if (user == null)
throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
return user;
}
で作成されたアカウントを使用するにはどうすればよいです@Before
か@WithUserDetails
?
ベストアンサー1
@WithUserDetails
残念ながら、を簡単に行うことはできません。Spring アノテーションは、でメソッドを実行する前に Spring セキュリティ コンテキスト テスト リスナーを呼び出す@Before
ためです。@WithUserDetails
setUp
@Before
ここはhttps://stackoverflow.com/a/38282258/1814524ちょっとしたコツとあなたの質問への答え。