Я изучаю модульное тестирование с помощью Spring Boot. Я создал объект-заглушку из класса репозитория Spring Data с помощью Mockito. Все работает нормально, вот код:
@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
в репозиторий autowire в UserService
сейчас. Я хочу понять, можно ли вынуть и использовать все заглушки типа test Repository
в одном классе конфигурации. Заранее спасибо!