2 回答

TA貢獻(xiàn)1875條經(jīng)驗 獲得超5個贊
這是一個古老的問題,但對于那些可能偶然發(fā)現(xiàn)它試圖讓Spring Data審計在他們的集成測試中工作的人來說,這可能會有所幫助。審計功能需要一個 Bean 來獲取當(dāng)前用戶。在這一點上似乎缺失了。使其可用的一種方法是向測試中添加配置。AuditingAwareDataJpaTest@Bean
@RunWith(SpringRunner.class)
@DataJpaTest
@Import({DatabaseIntegrationTest.TestConfig.class})
@WithMockUser
class DatabaseIntegrationTest {
@TestConfiguration
@RequiredArgsConstructor
static class TestConfig {
@Bean
public AuditorAware<String> auditorAware() {
return () -> Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication().getName());
}
}
}

TA貢獻(xiàn)1772條經(jīng)驗 獲得超5個贊
@Before
public void setup() {
User user = userService.findByEmail("umanking@gmail.com").get();
SecurityContextHolder.getContext().setAuthentication(new Authentication() {
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public Object getCredentials() {
return user.getPassword();
}
@Override
public Object getDetails() {
return user;
}
@Override
public Object getPrincipal() {
return null;
}
@Override
public boolean isAuthenticated() {
return true;
}
@Override
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
}
@Override
public String getName() {
return user.getName();
}
});
}
也許你可以使用@Before注釋
添加回答
舉報