diff --git a/src/test/java/com/golai/tdd/ServiceATest.java b/src/test/java/com/golai/tdd/ServiceATest.java index 3a71976..32b24d9 100644 --- a/src/test/java/com/golai/tdd/ServiceATest.java +++ b/src/test/java/com/golai/tdd/ServiceATest.java @@ -1,42 +1,60 @@ package com.golai.tdd; +import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import java.util.Map; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; -import org.mockito.Mockito; - -import java.util.Map; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; /** * Created by prayagupd * on 10/3/16. */ - +@RunWith(MockitoJUnitRunner.class) public class ServiceATest { - @Test - public void testSomethingDelegatesToSomethingElse() { - ServiceA serviceA = new ServiceA(); - serviceA.serviceB = Mockito.mock(ServiceB.class); + private static final String SOME_ARG = "1"; - serviceA.executeSomething("1"); + @Mock + private ServiceB serviceB; - Mockito.verify(serviceA.serviceB).doSomething1("1-once", "1-again"); + @InjectMocks + private ServiceA serviceA; + + @Captor + private ArgumentCaptor stringCaptor; + + @Captor + private ArgumentCaptor> mapCaptor; + + @Captor + private ArgumentCaptor> secondMapCaptor; + + @Test + public void testExecuteSomethingDelegatesToCollaborators() { + // when + serviceA.executeSomething(SOME_ARG); - ArgumentCaptor captor1 = ArgumentCaptor.forClass(String.class); - ArgumentCaptor captor2 = ArgumentCaptor.forClass(Map.class); - ArgumentCaptor captor3 = ArgumentCaptor.forClass(Map.class); + // then + verify(serviceB).doSomething1(SOME_ARG + "-once", SOME_ARG + "-again"); - Mockito.verify(serviceA.serviceB).doSomething2(captor1.capture()); + verify(serviceB).doSomething2(stringCaptor.capture()); + assertEquals(SOME_ARG, stringCaptor.getValue()); - assert captor1.getValue().equals("1"); + verify(serviceB).doSomething3(mapCaptor.capture()); + assertEquals(SOME_ARG, mapCaptor.getValue().get("key")); - Mockito.verify(serviceA.serviceB).doSomething3(captor2.capture()); - assert captor2.getValue().get("key") == "1"; + verify(serviceB).doSomething4(eq(SOME_ARG), secondMapCaptor.capture()); + assertEquals(SOME_ARG, secondMapCaptor.getValue().get("key")); - // - Mockito.verify(serviceA.serviceB).doSomething4(eq("1"), captor3.capture()); - assert captor2.getValue().get("key") == "1"; + verifyNoMoreInteractions(serviceB); } }