मैं अपने प्रेजेंटर क्लास के लिए एक टेस्ट बनाना चाहता हूं लेकिन मुझे प्रेजेंटर के अंदर कंपोजिटस्क्रिप्शन इंस्टेंस के साथ समस्याएं आ रही हैं। आरएक्सजेवा कंपोजिट सदस्यता के साथ प्रेजेंटर यूनिट टेस्ट
public class Presenter {
CompositeSubscription compositeSubscription = new CompositeSubscription();
//creation methods...
public void addSubscription(Subscription subscription) {
if (compositeSubscription == null || compositeSubscription.isUnsubscribed()) {
compositeSubscription = new CompositeSubscription();
}
compositeSubscription.add(subscription);
}
public void getGummyBears() {
addSubscription(coreModule.getGummyBears());
}
}
CoreModule एक इंटरफेस (एक अलग मॉड्यूल का हिस्सा) है और वहाँ:
java.lang.NullPointerException
at rx.subscriptions.CompositeSubscription.add(CompositeSubscription.java:60)
at com.example.Presenter.addSubscription(Presenter.java:67)
at com.example.Presenter.getGummyBears(Presenter.java:62)
यह मोटे तौर पर मेरी प्रस्तुतकर्ता वर्ग है: मैं इस त्रुटि मिल रही है जब मैं परीक्षण चलाने एक और वर्ग CoreModuleImpl है जिसमें सभी रेट्रोफिट एपीआई कॉल और सदस्यता के लिए उनके रूपांतरण स्थित हैं। कुछ की तरह:
@Override public Subscription getGummyBears() {
Observable<GummyBears> observable = api.getGummyBears();
//a bunch of flatMap, map and other RxJava methods
return observable.subscribe(getDefaultSubscriber(GummyBear.class));
//FYI the getDefaultSubscriber method posts a GummyBear event on EventBus
}
अब मुझे क्या करना चाहते हैं getGummyBears()
विधि का परीक्षण करने के लिए है। मेरे परीक्षण विधि इस प्रकार है:
@Mock EventBus eventBus;
@Mock CoreModule coreModule;
@InjectMock CoreModuleImpl coreModuleImpl;
private Presenter presenter;
@Before
public void setUp() {
presenter = new Presenter(coreModule, eventBus);
coreModuleImpl = new CoreModuleImpl(...);
}
@Test
public void testGetGummyBears() {
List<GummyBears> gummyBears = MockBuilder.newGummyBearList(30);
//I don't know how to set correctly the coreModule subscription and I'm trying to debug the whole CoreModuleImpl but there are too much stuff to Mock and I always end to the NullPointerException
presenter.getGummyBears(); //I'm getting the "null subscription" error here
gummyBears.setCode(200);
presenter.onEventMainThread(gummyBears);
verify(gummyBearsView).setGummyBears(gummyBears);
}
मैं पहले से ही विभिन्न परियोजनाओं से कई परीक्षण उदाहरण देखा था, लेकिन कोई भी इस सदस्यता दृष्टिकोण का उपयोग कर रहा है। वे सिर्फ पर्यवेक्षक को लौटते हैं जो सीधे प्रस्तुतकर्ता के अंदर खपत होता है। और उस मामले में मुझे पता है कि एक परीक्षण कैसे लिखा जाना है।
मेरी स्थिति का परीक्षण करने का सही तरीका क्या है?
क्या आप प्रस्तुतकर्ता को 'कोर मॉड्यूल' कन्स्ट्रक्टर में लेते हैं? – skywall
हाँ क्षमा करें मैं 'लाइनअप' विधि – nicopasso
में इस लाइन 'प्रस्तुतकर्ता = नया प्रेजेंटर (कोर मॉड्यूल, इवेंटबस)' जोड़ने के लिए भूल गया था हाय @nicopasso क्या आपको इसे हल करने का कोई तरीका मिल सकता है? –