我正在使用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);
}
}
在我的测试中,为了运行我的片段,我按如下方式构建它(如How can I test fragments with 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
?