2017-01-26 9 views
1

Если у меня есть объект MyObject, я хочу вернуть некоторое значение, если вызывается определенный метод этого объекта. Например, что-то вроде этого:Mockito doReturn, если метод объекта с определенным классом называется

doReturn(someValue).when(Mockito.any(MyObject.class)).getSomeValue(); 

Я пробовал так, но это не работает:

org.mockito.exceptions.misusing.NullInsteadOfMockException: 
Argument passed to when() is null! 

ответ

4

Вы должны использовать Mockito.mock(MyObject.class) создать макет вашего объекта.

В настоящее время вы используете Mockito # любой, который является совпадением параметров, используемым для определения поведения в макете, когда для нужного метода вызывается любой заданный параметр.

@Test 
public void testMock() throws InterruptedException { 
    MyObject myObjectMock = Mockito.mock(MyObject.class); 
    doReturn(2).when(myObjectMock).getSomeValue(); 

    System.out.println(myObjectMock.getSomeValue()); // prints 2 
} 

private class MyObject { 
    public int getSomeValue() { 
     return 1; 
    } 
} 
+0

Вы правы, этот пример ваших работ, но в моем случае, я думаю, мне нужно добавить что-то дополнительное, поскольку оно не возвращает никакого значения. – mirzak

+1

@mirzak Я не совсем понимаю вас, можете ли вы привести пример? –

+0

Это решение было правильным, мой объект был переопределен чем-то не связанным. – mirzak

1

В качестве альтернативы, вы можете использовать Mockito аннотации:

@RunWith(MockitoJUnitRunner.class) 
public class YourTestClass { 
    @Mock 
    MyObject myObjectMock 

спасает вас от вручную насмешливых этого объекта в вашей установке или методы испытаний.