Mockowanie beanów serwisu z u życiem Mockito

0

Kwestia wygląda tak:

Mam serwis który ma kilka autowire'rowanych (@Autowired) beanów (7 beanów)

W teście chce zrobić moka dla tego serwisu na 2 beany (na konkretne metody z którcyh korzysta serwis).

Używam
@mock - na beanach ktorym chcę zmienić zachowanie
@InjectMock. - na serwisie gdzie chcę wstrzyknąć te beany.

Problem:
W seriwsie podczas debagowania mockowane beany działają zgodnie z zamierzeniem.
Natomiast beany których nie mokowałem są NULLami.

W jaki sposób zamokować 2 beany z tego przypadku aby pozostałe załadowały się z kontekstu.

W pozostałych jest między innymi SessionFactory na którym tworzę hiberante criteria.

Proszę o wskazówki :)

2

To jest średni pomysł. To ma być test jednostkowy czy integracyjny skoro chcesz ładować prawdziwe beany?

0

@Shalom
Chcę przetestować serwis który w swojej implementacji korzysta ze wspomnianych 7 beanów, Na dwóch z nich muszę zamokować funkjace które wykorzystuję. (bazują one na bardzo dużej ilości danych których nie mam - serwisy z tych 2 beanów były już testowane i działają dobrze).
Pozostałe 5 powinny ładować się z kontekstu.

0

Nie wiem co do konca chcesz osiągnąć.

Spring?
Pojawiło się cos jak @MockBean
https://dzone.com/articles/mockbean-spring-boots-missing-ingredient?utm_content=buffer30136&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

Możesz też wstrzykiwać przez interface i z profilem np. integration i zwrócić jakies wyniki w impl.

1

Czyli test integracyjny. Stwórz odpowiedni kontekst, w którym dwa beany będą dostarczone z fabryki, która odpowiednio przygotuje mocki, a reszta z normalnego kontekstu. Nie używaj głównego kontekstu aplikacji, bo nie ma to sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1