का उपयोग करने वाले कोणीय 2 घटकों का परीक्षण करना मेरे पास एक सामान्य, सरल एनजी 2 घटक है जो कुछ डेटा (कैरोसेल आइटम) प्राप्त करने के लिए सेवा कहता है। यह प्रत्येक एन सेकेंड में यूआई में कैरोसेल स्लाइड्स को स्वत: स्विच करने के लिए setInterval का भी उपयोग करता है। यह ठीक काम करता है, लेकिन जब जैस्मीन परीक्षण चलाते हैं तो मुझे त्रुटि मिलती है: "एसिंक परीक्षण क्षेत्र के भीतर से सेट इंटरवल का उपयोग नहीं कर सकता"।सेटिंगरल या सेटटाइमआउट
मैंने इस .zone.runOutsideAngular (() => {...}) में सेट अंतराल कॉल को लपेटने की कोशिश की, लेकिन त्रुटि बनी रही। मैंने सोचा होगा कि फर्जीएसिंक क्षेत्र में चलाने के लिए परीक्षण को बदलने से समस्या हल हो जाएगी, लेकिन फिर मुझे एक त्रुटि मिलती है कि एक्सएचआर कॉल को नकली एसिंक परीक्षण क्षेत्र (जो समझ में आता है) से अनुमति नहीं है।
मैं सेवा और अंतराल द्वारा किए गए दोनों एक्सएचआर कॉल का उपयोग कैसे कर सकता हूं, जबकि अभी भी घटक का परीक्षण करने में सक्षम है? मैं एनजी 2 आरसी 4, कोणीय-क्ली द्वारा उत्पन्न परियोजना का उपयोग कर रहा हूं। अग्रिम में बहुत धन्यवाद।
घटक से मेरे कोड:
constructor(private carouselService: CarouselService) {
}
ngOnInit() {
this.carouselService.getItems().subscribe(items => {
this.items = items;
});
this.interval = setInterval(() => {
this.forward();
}, this.intervalMs);
}
और जैस्मीन कल्पना से:
it('should display carousel items', async(() => {
testComponentBuilder
.overrideProviders(CarouselComponent, [provide(CarouselService, { useClass: CarouselServiceMock })])
.createAsync(CarouselComponent).then((fixture: ComponentFixture<CarouselComponent>) => {
fixture.detectChanges();
let compiled = fixture.debugElement.nativeElement;
// some expectations here;
});
}));
शानदार, यह वही है जो मुझे जानने की जरूरत है। एक चीज जिसे मुझे बदलने की जरूरत थी वह मॉकइंटरवल सेवा में थी: "कॉलबैक;" दोबारा बुलाना() { }"। अन्यथा इसका परिणाम "TypeError: this.callback एक फ़ंक्शन नहीं है"। बहुत धन्यवाद! –
यह एक अच्छा विचार है और महान काम करता है। यह एक ऐसी सेवा बनाने के लिए और अधिक समझदारी होगी जो सेटटाइम से मेल खाता है और उन्हें स्वैप करने के बजाय अंतराल तर्क सेट करता है। – jsgoupil
इसके अलावा आपके पास उस कोड के साथ दो अंतराल नहीं हो सकते हैं क्योंकि यदि आप उन्हें बाद में साफ़ करना चाहते हैं तो आप उनकी आईडी का ट्रैक खो सकते हैं। इसके लिए मैं अंतराल सेवा को वास्तविक तरीकों की प्रतिलिपि बनाने देता हूं। – Dunos