我正在开发一个Android
应用程序,并且一直在使用Dagger
依赖注入。
我现在正在尝试测试具有这些依赖项之一的片段,我们称之为ProductsService
.
在我的Robolectric
测试中,我已经获得了一个覆盖的测试模块ProductsService
:
@Module(
includes = ProductsModule.class,
injects = {
Fragment.class,
FragmentTest.class
},
overrides = true
)
static class MockProductsModule {
@Provides
@Singleton
public ProductsService providesProductsService() {
return Mockito.mock(ProductsService.class);
}
}
在我的测试中,为了运行我的片段,我按如下方式构建它(如此处所示如何使用 Robolectric 测试片段?)
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class)
.create()
.start()
.resume()
.get();
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(fragment, null);
fragmentTransaction.commit();
问题是,在此创建过程中,它会调用Dagger
以满足其依赖关系:
((MyApplication)getActivity().getApplication()).inject(this);
如何覆盖创建片段时创建的对象图,以使用MockProductsModule
我在测试中声明的?