为许多测试定义通用模拟对象 类
Define common mock objects for many test classes
我正在学习使用 Spring Boot 进行单元测试。我使用 Mockito 从 Spring 数据存储库 class 创建了一个存根对象。一切正常,这是一个代码:
@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
}
但如果我们不需要不同的存根行为,则为每个 class 使用此 @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
中的存储库。
我想了解是否可以在一种配置 class 中取出并使用所有测试 Repository
类型的存根。提前致谢!
就用这个
class TestConfig {
@Bean
UserRepository userRepository() {
final UserRepository repo = mock(UserRepository.class);
.. do mocking ..
return repo;
}
}
然后你就可以@Import(TestConfig.class)
在你需要的地方
我正在学习使用 Spring Boot 进行单元测试。我使用 Mockito 从 Spring 数据存储库 class 创建了一个存根对象。一切正常,这是一个代码:
@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
}
但如果我们不需要不同的存根行为,则为每个 class 使用此 @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
中的存储库。
我想了解是否可以在一种配置 class 中取出并使用所有测试 Repository
类型的存根。提前致谢!
就用这个
class TestConfig {
@Bean
UserRepository userRepository() {
final UserRepository repo = mock(UserRepository.class);
.. do mocking ..
return repo;
}
}
然后你就可以@Import(TestConfig.class)
在你需要的地方