5

तो, यह मेरी पहली परियोजना है जहां मैं कर्म और जैस्मीन का उपयोग अपने कोणीय जेएस कोड की इकाई परीक्षण करने के लिए कर रहा हूं। सेटअप के लिए प्रयुक्त Yeoman कोणीय जनरेटर।जैस्मीन का उपयोग करके कर्म पर 10 से अधिक परीक्षण चलाना: "त्रुटि: आपके कुछ परीक्षणों ने एक पूर्ण पृष्ठ पुनः लोड किया!"

जैसे ही मैं 11 परीक्षणों तक पहुंचा, मुझे यह कहते हुए एक त्रुटि मिली कि "आपके कुछ परीक्षणों ने एक पूर्ण पृष्ठ पुनः लोड किया"। मैं कोई परीक्षण नहीं कर रहा हूं जो एक रीलोड ट्रिगर करेगा।

गहराई से गहराई से मैंने गिथब पर संदर्भित एक ही मुद्दे को देखा। https://github.com/jasmine/jasmine/issues/366 - (FuzzySockets टिप्पणियाँ)

समस्या, https://github.com/jasmine/jasmine/blob/master/lib/jasmine-core/jasmine.js

ढेर के अतिप्रवाह से बचने के लिए चमेली कोर में कोड की एक पंक्ति से उत्पन्न करने लगता है maximumSpecCallbackDepth 20 के लिए सेट है और हर बार से अधिक है currentSpecCallbackDepth कि, setTimout फ़ंक्शन का उपयोग करके नए परीक्षण पर आगे के परीक्षण निष्पादित किए जाते हैं।

यह वह रेखा है जो समस्याओं का कारण बनती है और कर्म को त्रुटि फेंक देती है। (मैंने अपने स्वयं के यूनिट परीक्षण में setTimeout विधि का आह्वान करके इसे सत्यापित कर लिया है, और यह वही त्रुटि फेंक दिया)।

तो maximumSpecCallbackDepth 100 को बदलने के लिए, मेरे परीक्षण ठीक चलाते हैं, और कोई त्रुटि किसी को भी इस समस्या को देखा और एक ठीक पता है अंत

पर फेंक दिया जाता है? मैं कर्म के नवीनतम संस्करण (0.13.15) और जैस्मीन (2.4.1) का उपयोग कर रहा हूं।

मैंने वास्तव में डिफ़ॉल्ट गड़बड़ी या कर्म कॉन्फ़िगरेशन के साथ बहुत अधिक गड़बड़ नहीं की है जो कि योनि जेनरेट के साथ आया है, सिवाय इसके कि मैं डिफ़ॉल्ट phantomJS के बजाय क्रोम लॉन्चर का उपयोग कर रहा हूं, इसलिए मुझे नहीं पता कि हर कोई कैसे और यहां एक ही मुद्दे का सामना नहीं कर रहा है। इस समस्या के लिए

+0

हालांकि मेरे सभी परीक्षण निष्पादित किए गए हैं –

उत्तर

1

+1। जैसा कि आपने कहा था, यह maxSpecCallbackDepth सीमा के कारण होता है, लेकिन मुझे अब तक इस समस्या के लिए कोई फिक्स नहीं मिला। आप शायद https://github.com/karma-runner/karma/issues/1101 पर समस्या को ट्रैक कर सकते हैं।

एक अस्थायी समाधान आपकी परियोजना में नेस्टेड 'वर्णन' ब्लॉक को कम करना है।

1

मुझे एक समान समस्या मिली जहां वैश्विक में कोणीय इंजेक्शन पहले से काम करना बंद कर दिया और अधिकतम परीक्षण अधिकतम स्पीक कॉलबैक डेप की 20 सीमा के बाद विफल रहा।

मेरी जांच के दौरान, मुझे पता चला कि कोणीय-नकली चमेली में किए गए सेटटाइमआउट के साथ अच्छी तरह से नहीं खेलती है जब वह सीमा तक पहुंच जाती है।

निम्नलिखित कोड है कि हर जगह उदाहरण के रूप में दिया जाता है प्रत्येक परीक्षा मामले पर एक नया इंजेक्टर पैदा करेगा:

var yourService; 
beforeEach(module('app')); 
beforeEach(inject(function(_yourService_) { 
    yourService = _yourService_; 
})); 

इसके बजाय, आप निम्न में से एक भी इंजेक्टर का उपयोग करें और अपने मॉड्यूल रजिस्टर केवल एक बार होगा कर सकता है ।

var yourService; 
module.sharedInjector(); 
beforeAll(module('app')); 
beforeEach(inject(function(_yourService_) { 
    yourService = _yourService_; 
})); 

आशा के रूप में यह मुझे लगभग एक सप्ताह में ही ले लिया पता लगाने के लिए है कि इस समस्या का मुख्य कारण था और नहीं जैस्मीन की तरह कुछ लोगों को GitHub पर लगता है कि यह दूसरों की मदद कर सकते हैं।

संबंधित मुद्दे