Bir Android
uygulamasında çalışıyorum ve bağımlılık enjeksiyonu için Dagger
kullanıyorum.Robolectric Tests'de Hançer Modülünü Geçersiz Kılma
Şimdi bu bağımlılıklardan birine sahip bir parçayı denemeye çalışıyorum, buna ProductsService
diyelim. Benim Robolectric
testinde
Ben ProductsService
geçersiz kılan bir test modülüne sahip kadarıyla var: (burada How can I test fragments with Robolectric? görüldüğü gibi) aşağıdaki gibi bunu inşa benim fragman çalıştırabilmek için, benim testte
@Module(
includes = ProductsModule.class,
injects = {
Fragment.class,
FragmentTest.class
},
overrides = true
)
static class MockProductsModule {
@Provides
@Singleton
public ProductsService providesProductsService() {
return Mockito.mock(ProductsService.class);
}
}
:
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class)
.create()
.start()
.resume()
.get();
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(fragment, null);
fragmentTransaction.commit();
sorun, bu oluşturma sırasında o bağımlılıkları var tatmin etmek Dagger
çağrı yapar edilir
((MyApplication)getActivity().getApplication()).inject(this);
Parça oluşturulduğunda oluşturulan nesne grafiğini nasıl geçersiz kılarım, testimde bildirdiğim MockProductsModule
numarasını kullanmak için nasıl kullanırım?
Güzel öneri. Grafik nesnesini enjekte etmek için bir yöntem yaptım ve bunu testlerde kullandım ama çözümünüzün koku tasarımında sakıncaları yok (ama koku testlerinin sakıncaları var :)). Teşekkür ederim! –
Peki bu benim çözümüm değil, Kare adamlara teşekkür et;) – futtetennista