2017-09-27 37 views
0

我是mockito的新手,所以我正在尝试学习一些基本示例。Mockito失败的基本示例

这是我的服务。

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(); 
    } 
} 

Mothing复杂。所以,我写我的测试类,如下所示:

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()被称为该字符串,但是因为它返回"String from service"我的测试失败。

我在这里错过了什么?我误解了mockito的工作原理吗?

回答

1

你必须告诉mockito哪里注入创建的模拟。在你的情况下,你只需要使用@InjectMocks注释:

public class SomeUseCaseTest { 
    @Mock 
    MyCoolService service; 

    @InjectMocks 
    SomeUseCase useCase = new SomeUseCase(); 

    .... 
} 
+0

它的工作很好。谢谢! – Manu