我正试图用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(数据);
MyPresenter中的@Inject使用Dagger 2注入对象。
有人可以帮忙吗?
Mockito只将mocks注入构造函数,使字段不确定。为了正确地测试它,需要使用构造函数参数和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);
}
}