2 回答

TA贡献1875条经验 获得超5个赞
这是一个古老的问题,但对于那些可能偶然发现它试图让Spring Data审计在他们的集成测试中工作的人来说,这可能会有所帮助。审计功能需要一个 Bean 来获取当前用户。在这一点上似乎缺失了。使其可用的一种方法是向测试中添加配置。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贡献1772条经验 获得超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注释
添加回答
举报