Java 为许多测试类定义公共模拟对象
我正在学习使用Spring Boot进行单元测试。我已经使用Mockito从Spring数据存储库类创建了一个存根对象。一切正常,以下是代码:Java 为许多测试类定义公共模拟对象,java,spring,unit-testing,mockito,spring-boot-test,Java,Spring,Unit Testing,Mockito,Spring Boot Test,我正在学习使用Spring Boot进行单元测试。我已经使用Mockito从Spring数据存储库类创建了一个存根对象。一切正常,以下是代码: @SpringBootTest class UserServiceTest { @MockBean private UserRepository userRepository; @BeforeAll public void configureMock() { User user = new User("mishenev",
@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
之后我用
@SpringBootTest(classes = SpringRepositoryTestConfiguration.class)
但我现在无法使用@MockBean
在UserService
中自动连接存储库。
我想了解是否可以在一个配置类中取出并使用所有测试存储库类型存根。提前谢谢你 就用这个吧
class TestConfig {
@Bean
UserRepository userRepository() {
final UserRepository repo = mock(UserRepository.class);
.. do mocking ..
return repo;
}
}
然后您可以在需要它的地方导入(TestConfig.class)
只要使用这个
class TestConfig {
@Bean
UserRepository userRepository() {
final UserRepository repo = mock(UserRepository.class);
.. do mocking ..
return repo;
}
}
然后您可以在需要的地方导入(TestConfig.class)