Mam taką klasę configuracyjną z beanami:
@Configuration
class UserConfig {
@Bean
fun userFacade(
userRepository: UserRepository,
passwordEncoder: PasswordEncoder
): UserFacade = UserFacade(
userRepository,
passwordEncoder,
UserFactory(passwordEncoder, userRepository)
)
@Bean
fun passwordEncoder(): PasswordEncoder = BCryptPasswordEncoder()
}
Przykładowy test:
@SpringBootTest
@Transactional
class UserIT {
@Autowired
private lateinit var userFacade: UserFacade
@Test
fun should_register_user() {
val registeredUser = userFacade.registerUser(
RegisterUserDTO("user1", "12345")
)
assertThat(
userFacade.readUserByUsername(registeredUser.username)
).isEqualTo(registeredUser)
}
}
Problem w tym, że w trakcie wykonywania testu (sprawdziłem debuggerem) wszystkie zależności tej fasady są nullami. Jeśli zamiast tej klasy z beanami użyje @Service
nad UserFacade
to wszystko działa.
Aktualizacja:
Dokładnie to UserFactory
jest null
em, nie wiedząc czemu.
@Configuration
dostarcza konkretny typ bean'a.