Here is an example of using Mockito to mock a service. The service used in this example, is a fictitious PersonService
which returns Person
objects based on their name. It might do this by connecting to a external database. In our unit tests, we don't want to connect to an external database, hence the reason for creating a mock. The mocked version shown below always returns a new Person
object with the name that was passed into the service.
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
import static org.junit.Assert.*;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
public class PersonServiceTest {
@Mock private PersonService personService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(personService.getPerson(anyString())).thenAnswer(
new Answer<Person>() {
@Override
public Person answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return new Person((String)args[0]);
}
});
}
@Test
public void testGetPerson(){
assertEquals("Alice", personService.getPerson("Alice").getName());
}
}
This comment has been removed by a blog administrator.
ReplyDelete