我正在开发一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,为了运行我的片段,我按如下方式构建它(如此处所示如何使用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();
Run Code Online (Sandbox Code Playgroud)
问题是,在创建过程中,它会调用Dagger以满足它的依赖关系:
((MyApplication)getActivity().getApplication()).inject(this);
Run Code Online (Sandbox Code Playgroud)
如何覆盖创建片段时创建的对象图,以便MockProductsModule在我的测试中使用I声明?