मैं Android
एप्लिकेशन पर काम कर रहा हूं और मैं निर्भरता इंजेक्शन के लिए Dagger
का उपयोग कर रहा हूं।Robolectric टेस्ट में डैगर मॉड्यूल ओवरराइड
मैं अब एक टुकड़ा है जो इन निर्भरता में से एक है परीक्षण करने के लिए कोशिश कर रहा हूँ, चलो यह ProductsService
फोन करते हैं।
मेरी Robolectric
परीक्षण में मैं एक परीक्षण मॉड्यूल ProductsService
ओवरराइड करता है होने के रूप में जहाँ तक मिल गया है: (के रूप में यहाँ How can I test fragments with Robolectric? देखा)
@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();
समस्या है, इस निर्माण के दौरान यह कॉल Dagger
के लिए बनाता है यह निर्भरता है को पूरा करने के:
((MyApplication)getActivity().getApplication()).inject(this);
MockProductsModule
का उपयोग करने के लिए, मैं अपने परीक्षण में घोषित करने के लिए, जब टुकड़ा बनाया गया है, तो ऑब्जेक्ट ग्राफ़ को ओवरराइड कैसे कर सकता हूं?
अच्छा सुझाव। मैंने ग्राफ ऑब्जेक्ट को इंजेक्ट करने के लिए एक विधि बनाई और परीक्षणों में इसका इस्तेमाल किया लेकिन आपके समाधान में गंध डिज़ाइन की कमी नहीं है (लेकिन गंध परीक्षणों की कमी है :))। धन्यवाद! –
वैसे यह मेरा समाधान नहीं है, स्क्वायर दोस्तों के लिए धन्यवाद कहें;) – futtetennista