Я немного изменил ваш сервис, добавив метод foo:
@Service
public class MyService {
public MyService() {
System.out.println("CONSTRUKTOR");
}
@PostConstruct
public void init() {
System.out.println("POST CONSTRUCT");
}
public String foo() {
return "bar";
}
}
Если вы хотите получить поведение, которое вы описали, есть как минимум две возможности:
@RunWith(SpringJUnit4ClassRunner.class)
+ @Autowired
- эта комбинация позволит вам получить обычную услугу в вашем тесте
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyService.class)
public class Mockito1 {
@Autowired
private MyService service;
@Before
public void init() {
}
@Test
public void name() throws Exception {
System.out.println(service.foo());
}
}
Этот код напечатает:
CONSTRUKTOR
POST CONSTRUCT
bar
@RunWith(SpringJUnit4ClassRunner.class)
+ @SpyBean
- эта комбинация позволит вам получить услугу в своем тесте и изменить ее поведение, используя Mockito
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyService.class)
public class Mockito1 {
@SpyBean
private MyService service;
@Before
public void init() {
}
@Test
public void name() throws Exception {
System.out.println(service.foo());
Mockito.when(service.foo()).thenReturn("FOO");
System.out.println(service.foo());
}
}
Этот коднапечатает:
CONSTRUKTOR
POST CONSTRUCT
bar
FOO