У меня есть абстрактный класс обслуживания, который автоматически подключает указанный тип хранилища.
abstract class SomeService<T extends SomeRepository<U>, U ...> {
@Autowrired
@Accessors(fluent = true)
@Getter(PROTECTED)
private U repositoryInstance;
}
Теперь я пытаюсь создать абстрактный тестовый класс для подклассов класса обслуживания.
@SpringBootTest
abstract class SomeServiceTest<T extends SomeService<U>, U extends SomeRepository<V>, V ...> {
@Autowrired
@Accessors(fluent = true)
@Getter(PROTECTED)
private T serviceInstance;
// DOES NOT WORK!
@MockBean
@Accessors(fluent = true)
@Getter(PROTECTED)
private U repositoryInstance; // != serviceInstance.repositoryInstance();
}
Но насмешка над компонентом в тестовом классе действительного класса обслуживания работает.
class OtherServiceTest
extends SomeServiceTest<OtherService, OtherRepository, ...> {
@TestConfiguration
OtherServiceTestConfiguration {
// WORKS!!!
// == serviceInstance().repositoryInstance();
@MockBean private OtherRepository repositoryInstance;
}
}
class AnotherServiceTest
extends SomeServiceTest<AnotherService, AnotherRepository, ...> {
// WORKS!!!
// == serviceInstance().repositoryInstance();
@MockBean private AnotherRepository repositoryInstance;
}
Как можно смоделировать SomeServiceTest#repositoryInstance
, чтобы он ссылался на тот же объект, что и SomeServiceTest#serviceInstance.repositoryInstance()
?