私は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
て、テストで I 宣言を使用するにはどうすればよいですか?