2017-09-27 4 views
0

Ich bin neu zu Mockito, also versuche ich, mit einigen grundlegenden Beispielen zu lernen.Mockito failing grundlegendes Beispiel

Hier ist mein Service.

public class MyCoolServiceImpl implements MyCoolService{ 

    public String getName() { 
     return "String from service"; 
    } 

} 

MyCoolService ist nur eine Schnittstelle

public interface MyCoolService { 

    public String getName(); 
} 

Und ich habe einen einfachen Anwendungsfall:

public class SomeUseCase { 
    private MyCoolService service = new MyCoolServiceImpl(); 

    public String getNameFromService(){ 
     return service.getName(); 
    } 
} 

Mothing kompliziert. Also habe ich meine Testklasse wie folgt schreiben:

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

So, wie ich sie verstehe, str sollte "String from mockito" enthält, da ich Mockito sage, dass die Zeichenfolge zurück, wenn service.getName() genannt wird, aber mein Test schlägt fehl, weil es gibt "String from service" .

Was fehlt mir hier? Habe ich missverstanden, wie Mockito funktioniert?

Antwort

1

Sie müssen mockito mitteilen, wo der erstellte Schein injiziert werden soll. In Ihrem Fall müssen Sie nur verwenden @InjectMocks Anmerkung:

public class SomeUseCaseTest { 
    @Mock 
    MyCoolService service; 

    @InjectMocks 
    SomeUseCase useCase = new SomeUseCase(); 

    .... 
} 
+0

Es funktioniert gut. Vielen Dank! – Manu

Verwandte Themen