EasyMock - testowanie metody serwisu z użyciem DAO

0

Używam EasyMock do testów. Potrzebuję testować pewną metodę z serwisu i do tego serwisu potrzebuję "wstrzyknąć" również zmockowane DAO.
W serwisie używanych jest kilka DAO i moja metoda odwołuje się do innych metod, które korzystają z dwóch różnych DAO. Jak mogę w EasyMock dostarczyć zaślepione DAO do mockowanego serwisu?

Z góry dzięki za podpowiedź.

2
  1. Jeśli wstrzykujesz przez konstruktor to problemu w ogóle nie ma (i tak robic powinieneś!)
  2. Jeśli wstrzykujesz za pomocą field injection to serwis musisz opakować przez @TestSubject a mockowane dao przez @Mock
0

Dziękuję za odpowiedź. Skorzystałem z drugiego sposobu i w pełni rozwiązuje sprawę. A co do pierwszego sposobu, mógłbyś rozwinąć dlaczego?

4

Powodów jest kilka:

  1. Nie da sie "zapomnieć" o wstrzyknięciu. Dodajesz sobie jakieś nowe wstrzykiwane pole do klasy i nagle musisz pamiętać żeby updatować 100 testów w których je wstrzykujesz. Jeśli robisz to przez konstruktor to automatycznie dostaniesz informacje od kompilatora gdzie brakuje parametrów.
  2. Możesz wygodnie tworzyć sobie te obiekty bez żadnego kontenera IoC, co często może sie przydać, choćby w trakcie testów
  3. Utrudnia robienie karkołomnych operacji jak cykliczne wstrzykiwanie
  4. Pola które wstrzykujesz mogą być final
  5. Nie ma "magicznego" kodu którego nie da sie debugować. Dajesz breakpoint w konstruktorze i widzisz co za obiekty są tam ustawiane. Przy field injection nie możesz tego zrobić.

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