java为许多测试类定义了通用的模拟对象
我正在学习用Spring Boot进行单元测试。我使用Mockito从Spring数据存储库类创建了一个存根对象。一切正常,下面是一个代码:
@SpringBootTest
class UserServiceTest {
@MockBean
private UserRepository userRepository;
@BeforeAll
public void configureMock() {
User user = new User("mishenev",
"Dmitrii",
"Mishenev",
"123",
"mishenev.8@gmailcom",
new UserSettings());
when(userRepository.findById(anyLong())).thenReturn(Optional.of(user));
when(userRepository.findUserByUserName(anyString())).thenReturn(user);
// .. Tests
}
但是,如果我们不需要不同的存根行为,那么为每个类使用@BeforeAll测试存储库配置是一种样板风格。然后我尝试使用@TestConfiguration
@TestConfiguration
public class SpringRepositoryTestConfiguration {
@Bean
public UserRepository userRepository () {
UserRepository userRepository = Mockito.mock(UserRepository.class);
// Configuring mock's behaviour
return userRepository;
}
}
之后我用
@SpringBootTest(classes = SpringRepositoryTestConfiguration.class)
但我现在无法使用@MockBean
自动连接UserService
中的存储库。
我想了解是否可以在一个配置类中取出并使用所有测试Repository
类型存根。提前谢谢
# 1 楼答案
用这个
然后你就可以在你需要的地方
@Import(TestConfig.class)