2017-09-27 71 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