Я работаю над приложением 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
, который я объявляю в своем тесте?