Hej,
mam problem z Mockito podczas wstrzykiwania zależności w testach.
Chodzi o przypadek o przypadek bardziej złożonych zależności
Nie rozumiem dlaczego Mockito nie inicjalizuja poprawnie klas, niektóre są Nullem , choć są oznaczone przez adnotację Mockito
Poniżej przykład:
@RequiredArgsConstructor
@Service
public class CompetitionTagService {
private final CompetitionRepository competitionRepository;
private final VerifyMethodsForServices verifyMethodsForServices;
}
@Service
@RequiredArgsConstructor
public class VerifyMethodsForServices {
private final CompetitionRepository competitionRepository;
private final FindTeamService findTeamService;
}
Tutaj jak widzimy obie te klasy wykorzystują CompetitionRepository i mam wrażenie, że przez to Mockito się gubi.
Nie wiem tak naprawdę jak mogę to poprawić, tak aby zachować przejrzystość inicjalizacji w testach
Przy takiej konfiguracji:
@Mock
CompetitionRepository competitionRepository;
@Mock
FindTeamService findTeamService;
@InjectMocks
CompetitionTagService competitionTagService;
@InjectMocks
VerifyMethodsForServices verifyMethodsForServices;
Dostaję błąd, że VerifyMethodsForServices jest Nullem (pewnie przez InjectMocks)
Natomiast podczas takiej:
@Mock
CompetitionRepository competitionRepository;
@Mock
FindTeamService findTeamService;
@InjectMocks
CompetitionTagService competitionTagService;
@Mock
VerifyMethodsForServices verifyMethodsForServices;
VerifyMethodsForServices
nie widzi CompetitionRepository
bo użyłem Mock
Wychodzi takie masło maślane.
Finalnie skończyło się na takie konfiguracji:
@Mock
CompetitionRepository competitionRepository;
@Mock
FindTeamService findTeamService;
CompetitionTagService competitionTagService;
@InjectMocks
VerifyMethodsForServices verifyMethodsForServices;
I po prostu inicjalizuje ręcznie:
competitionTagService = new CompetitionTagService(competitionRepository, verifyMethodsForServices);
Czy da się to jakoś wszystko spiąć annotacjami ?
Czy ręczna inicjalizacja jest po prostu konieczna?
Generalnie nie skupiałbym się w tym przypadku pod względem "architektury" tego typu zależności, choć oczywiście wszelkie rady iw skazówki chętnie przyjmię.
W głównej mierze zależy mi na zrozumieniu mockowania wlaśnie takiego łańcucha zależności.
Za pomoc z góry dzięki.