Mockowanie beanów serwisu z u życiem Mockito

Mockowanie beanów serwisu z u życiem Mockito
PA
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 8 lat
  • Postów:80
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 :)

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
PA
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 8 lat
  • Postów:80
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.

edytowany 3x, ostatnio: Pawski
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.

Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Stacktrace
  • Postów:6822
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.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.