Я немного озадачен возможностями тестирования и утилитами, предоставляемыми Spring Boot.
Я использую spring-boot-starter-test
в своем проекте, и я хотел бы провести модульное тестирование своих служб без подключения к базе данных.
В настоящее время я использую @WebMvcTest
для тестовых наборов контроллеров и @SpringBootTest
для всех остальных тестовых классов.
Но я где-то читал, что @SpringBootTest
предназначен для использованиятолько в интеграционных тестах ...
Чтение документации Я не понял, что такое предлагаемый подход для сервисов. Стоит ли тестировать их только в интеграции с репозиториями?
ОБНОВЛЕНИЕ
Это отрывок из тестового класса для одного из моих сервисов:
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
internal class SignupServiceTest(
@Autowired val signupService: SignupService
) {
@MockkBean
lateinit var userRepository: UserRepository
@Test
fun `should return exception if username already used`() {
every { userRepository.findByUsername("registered-user") } returns fakeUser(username = "registered-user")
assertThatThrownBy {
signupService.createNewAccount(fakeSignupForm(username = "registered-user"))
}.isExactlyInstanceOf(UsernameNotAvailableException::class.java)
}
// ... other tests
}