我是simito的新手,所以我试着学习一些基本的例子。
这是我的服务。
public class MyCoolServiceImpl implements MyCoolService{
public String getName() {
return "String from service";
}
}
MyCoolService
只是一个界面
public interface MyCoolService {
public String getName();
}
我有一个简单的用例:
public class SomeUseCase {
private MyCoolService service = new MyCoolServiceImpl();
public String getNameFromService(){
return service.getName();
}
}
什么都很复杂。所以我按如下方式编写测试类:
public class SomeUseCaseTest {
@Mock
MyCoolService service;
SomeUseCase useCase = new SomeUseCase();
@Before
public void setUp(){
initMocks(this);
when(service.getName()).thenReturn("String from mockito");
}
@Test
public void getNameTest(){
String str = useCase.getNameFromService();
assertEquals("String from mockito", str);
}
}
所以,据我所知,str
应该包含"String from mockito"
,因为我告诉mockito在调用service.getName()
时返回该字符串,但是我的测试失败,因为它返回{{ 1}}。
我在这里缺少什么?我误解了mockito是如何运作的吗?
答案 0 :(得分:1)
你必须告诉mockito
注入创建的模拟的位置。在您的情况下,您只需使用@InjectMocks
注释:
public class SomeUseCaseTest {
@Mock
MyCoolService service;
@InjectMocks
SomeUseCase useCase = new SomeUseCase();
....
}