Warning: Undefined variable $time_difference in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 324
Warning: Undefined array key 0 in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 336
Warning: Undefined variable $time_difference in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 324
Warning: Undefined array key 0 in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 336
Warning: Undefined array key 8 in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 214
Warning: Trying to access array offset on null in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 214
Warning: Undefined array key 8 in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 237
Warning: Trying to access array offset on null in /usr/home/smartgroup/domains/blog.tulikowski.com/public_html/wp-content/plugins/similarity/similarity.php on line 237
W sytuacji, gdy piszemy testy JUnit dla klasy, która posiada pola ustawione poprzez dependency injection, niejednokrotnie pojawia się problem ustawienia tych pól. Z pomocą przychodzi nam tutaj Mockito.
Rozpatrzmy to na przykładzie. Mamy servis, który chcemy przetestować:
@Service("customerCheckService")
public class CustomerCheckServiceImpl implements CustomerCheckService {
@Autowired
CustomerDao customerDao;
Jak widzimy customerDao jest wstrzyknięty poprzez Autowired. Pisząc test musimy wstrzyknąć to dao do serwisu.
I tutaj z pomocą przychodzi nam Mockito i odpowiednie anotacje.
Pierwszym krokiem jest stworzenie mocka klasy (customerDao), która ma zostać wstrzyknięta. Odbywa się to poprzez anotację @Mock.
@Mock
CustomerDao customerDao;
Następnie musimy odpowiednie zanotować klasę, do której mają zostać wstrzyknięte nasze mocki. Wykorzystujemy tutaj kolejną anotację: @InjectMocks, która zadba o to, aby wszystkie pola ustawiane poprzez wstrzykiwanie zostały ustawione.
@InjectMocks
CustomerCheckServiceImpl customerCheckService = new CustomerCheckServiceImpl();
Musimy pamiętać jedynie, aby wcześniej zostały stworzone odpowiednie mocki.