Поддельные данные с Mockito - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь смоделировать данные с помощью Mockito и получаю NPE.Вот пример кода, который я пытаюсь проверить:

public class MyPresenter implements Contract.Presenter {
  @Inject
  MyManager myManager;

  @Override
  public void doSomething(Data data) {
    myManager.doSomething(data);
  }
}

public class MyPresenterTest {

  @Mock
  private MyManager myManager; 

  @InjectMocks
  private MyPresenter myPresenter;

  @Before
  public void setup(){
  MockitoAnnotations.initMocks(this);
  }

  @Test
  public void doSomethingTest(){
    Data data = new Data();
    myPresenter.doSomething(data);
    verify(myManager).doSomething(data);
  }
}

NPE идет по следующей строке в классе MyPresenter.

myManager.doSomething (data);

@ Inject в MyPresenterвводит объект с помощью Dagger 2.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 27 февраля 2019

Mockito внедряет макеты только в конструктор, оставляя поля неопределенными.Чтобы проверить это правильно, нужно инициализировать класс с помощью параметра конструктора и Mockito вручную.Это будет работать, если вы можете добавить конструктор, который принимает экземпляр MyManager, например -

public class MyPresenter implements Contract.Presenter {
  @Inject
  MyManager myManager;

  public MyPresenter(MyManager myManager){ // constructor is required for mocikto to inject your fields.
     this.myManager = manager
  }

  @Override
  public void doSomething(Data data) {
     myManager.doSomething(data);
  }
}
...