This is a sample how to use mocks in a junit test class:
package de.poulter.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SampleTest{
private static final Logger log = Logger.getLogger(SampleTest.class);
@Configuration
static class SpringConfig {
@Bean
public FirstService firstService() {
FirstServiceImpl firstServiceImpl = new FirstServiceImpl();
firstServiceImpl.setSecondService(secondService());
return firstServiceImpl;
}
@Bean
public SecondService secondService() {
return Mockito.mock(SecondService.class);
}
}
@Autowired
FirstService firstService;
@Autowired
SecondService secondService;
@Before
public void resetMocks() {
Mockito.reset(secondService);
}
@Test
public void checkServicesTest() {
assertNotNull(firstService);
assertNotNull(secondService);
}
@Test
public void theTest() {
when(secondService.methodX(any(TypeY.class))).thenAnswer(
new Answer<TypeX>() {
@Override
public TypeX answer(InvocationOnMock invocation) {
TypeX typeX = new TypeX();
return typeX ;
}
}
);
firstService.toBeTestedMethod(value1, value2);
ArgumentCaptor<TypeY> captor = ArgumentCaptor.forClass(TypeY.class);
verify(secondService, times(1)).methodX(captor.capture());
TypeY typeY= captor.getValue();
assertEquals(expected, typeY);
}
}