Slide 1

Slide 1 text

MOCKING FOR UNIT TEST USING MOCKITO

Slide 2

Slide 2 text

MOCKING FOR UNIT TEST USING MOCKITO EKO KURNIAWAN KHANNEDY ▸ Principal R&D Engineer at Blibli.com ▸ Part of R&D Team at Blibli.com ▸ [email protected]

Slide 3

Slide 3 text

MOCKING FOR UNIT TEST USING MOCKITO AGENDA ▸ Mocking ▸ Stubbing ▸ Verification ▸ Capturing

Slide 4

Slide 4 text

MOCKING MOCKING FOR UNIT TEST

Slide 5

Slide 5 text

MOCKING IS CREATING OBJECTS THAT MIMIC THE BEHAVIOR OF REAL OBJECTS What is Mocking? MOCKING FOR UNIT TEST USING MOCKITO

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

MOCKING FOR UNIT TEST USING MOCKITO MOCKING USING MOCKITO import static org.mockito.Mockito.*; HttpServletRequest request = mock(HttpServletRequest.class);

Slide 8

Slide 8 text

MOCKING FOR UNIT TEST USING MOCKITO MOCKING USING MOCKITO JUNIT RULE @Rule
 public MockitoRule mockitoRule = MockitoJUnit.rule(); @Mock
 private HttpServletRequest request;

Slide 9

Slide 9 text

MOCKING FOR UNIT TEST USING MOCKITO INJECTING MOCK WITH MOCKITO @Rule
 public MockitoRule mockitoRule = MockitoJUnit.rule(); @Mock
 private HttpServletRequest request; @InjectMocks
 private MyController controller;

Slide 10

Slide 10 text

STUBBING MOCKING FOR UNIT TEST

Slide 11

Slide 11 text

ADD BEHAVIOR TO MOCKING OBJECT What is Stubbing? MOCKING FOR UNIT TEST USING MOCKITO

Slide 12

Slide 12 text

MOCKING FOR UNIT TEST USING MOCKITO STUBBING USING MOCKITO when(request.getParameter("name")).thenReturn(...); assertEquals(..., request.getParameter("name")); when(request.getParameter("error")).thenThrown(...); request.getParameter("error"); // throw exception when(request.getParameter("return")).thenAnswer(...);

Slide 13

Slide 13 text

VERIFICATION MOCKING FOR UNIT TEST

Slide 14

Slide 14 text

VERIFY INTERACTION TO MOCKING OBJECT What is Verification? MOCKING FOR UNIT TEST USING MOCKITO

Slide 15

Slide 15 text

MOCKING FOR UNIT TEST USING MOCKITO STUBING USING MOCKITO verify(request).getParameter("name"); verify(request, times(2)).getParameter("..."); verifyNoMoreInteractions(request);

Slide 16

Slide 16 text

CAPTURING MOCKING FOR UNIT TEST

Slide 17

Slide 17 text

CAPTURING VALUE THAT INTERACT WITH MOCKING OBJECT What is Capturing? MOCKING FOR UNIT TEST USING MOCKITO

Slide 18

Slide 18 text

MOCKING FOR UNIT TEST USING MOCKITO CAPTURING USING MOCKITO JUNIT RULE @Captor
 private ArgumentCaptor merchantCaptor;

Slide 19

Slide 19 text

MOCKING FOR UNIT TEST USING MOCKITO GET VALUE FROM CAPTOR verify(merchantRepository).save(merchantCaptor.capture()); Merchant merchant = merchantCaptor.getValue();

Slide 20

Slide 20 text

DEMO

Slide 21

Slide 21 text

MOCKING FOR UNIT TEST USING MOCKITO REFERENCES ▸ https://github.com/mockito/mockito/wiki ▸ https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features- testing.html