Модульное тестирование класса, который вызывает внешний сервис - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть следующий класс:

public class SomeClass {

    private Dependency dependency;

    public SomeClass(Dependency dep){
        this.dependency = dep;
    }


    public void doSomething(String s){
        Foo f = dependency.getFoo(s);
        f.doWork(); // fails because f is null
    }
}

Я пытаюсь написать модульные тесты, которые будут охватывать метод doSomething, в котором getFoo - это внешний вызов, который я пытаюсь смоделировать следующим образом:

@Mock
private Dependency dep;

@InjectMocks
private SomeClass _sc;


@Test
public void testSimple() {

Foo ff = new Foo();

when(dep.getFoo("abc")).thenReturn(ff);


SomeClass sc = new SomeClass();

sc.doSomething("abc"); // fails on null pointer exception

}

К сожалению, я получаю исключение нулевой ссылки в моем модульном тесте - так как ложный класс не возвращается.Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Сначала убедитесь, что ваш тестовый класс аннотирован с помощью MockitoJUnitRunner.

@RunWith(MockitoJUnitRunner.class)

Во-вторых, в вашем тесте вы должны использовать целевой тестовый класс "_sc", который вводится с помощью макетов.

0 голосов
/ 05 декабря 2018

Вы должны использовать

_sc.doSomething("abc");

, а не sc.doSomething("abc");

...