इससे पहले कि मैं अपने यूनिट परीक्षण में प्रभावी ढंग से
var moduleName = "gameModel";
var providerName = "gameConstants";
angular.module(moduleName);
inject(function($injector) {
$injector.get(providerName);
});
मैं मॉड्यूल और निरंतर कार्यान्वयन से मॉड्यूल नाम और प्रदाता नाम को कॉपी-पेस्ट कर रहा हूं, इसलिए मैं नामों में एक टाइपो नहीं हूं, इसलिए मैं इस क्रम में फाइलें लोड कर रहा हूं:
- कोणीय
- कोणीय mocks
- Js फ़ाइल में मॉड्यूल "gameModel" है - जिसकी कोई निर्भरता नहीं है
- Js फ़ाइल में निरंतर प्रदाता "gameConstants" है - जिसकी कोई निर्भरता नहीं है
- इकाई परीक्षण फ़ाइल .js।
मैं सोच यह स्पष्ट सामग्री को कवर करता है (मैंने सोचा कि मैं काफी हूंनया लेकिन मुझे अभी भी अज्ञात प्रदाता अपवाद नहीं मिल रहा है।
मैं "यह कुछ घंटों पर रहा हूँ और इस अजीबता को खोज लिया है जिसे मैं नहीं समझता":
var moduleName = "gameModel";
var providerName = "gameConstants";
angular.module(moduleName);
inject(function($injector){
console.log("Inject method, injector has provider: ", $injector.has(providerName));
console.log("First provider name: ", angular.module(moduleName)._invokeQueue[0][2][0]);
});
var fooInjector = angular.injector([moduleName]);
console.log("Explicitly rolled injector has provider: ", fooInjector.has(providerName));
इंजेक्शन विधि के माध्यम से has
विधि झूठी है, लेकिन अजीब तरह से मैं मॉड्यूल से ही प्रदाता का नाम प्राप्त कर सकता हूं। अगर मैं अपना खुद का इंजेक्टर (बाहर का कोड) रोल करूं inject
विधि) तब has
काम करता है और मैं भी प्रदाता पर प्राप्त कर सकते हैं। किसी को कुछ प्रकाश डाला जा सकता है क्यों यह हो रहा है के रूप में - यह मुझे लगता है जैसे मैं किसी तरह के लिए एक अलग इंजेक्टर मिल रहा हूँ $inject
तथा fooInjector
उत्तर:
उत्तर № 1 के लिए 1संक्षिप्त जवाब
मुझे विश्वास है कि आपका मुद्दा यह है कि आप उपयोग कर रहे हैं angular.module
इसके बजाय बस module
या angular.mock.module
.
लंबा जवाब
कोणीय मॉक लाइब्रेरी एक मॉक मॉड्यूल बनाती हैऔर इंजेक्शन समारोह। यह मॉड्यूल के गैर-नकली संस्करण के रूप में करना चाहिए और इंजेक्शन अभी भी सामान्य रूप से कार्य करने में सक्षम होना चाहिए ताकि आप वास्तव में अपने कोणीय कोड को चला सकें और परीक्षण कर सकें।
इसलिए जब आप इंजेक्शन लगा रहे हैं $injector
नकली इंजेक्शन समारोह में सेवा, नकली पुस्तकालय के बारे में कोई पता नहीं है "gameConstants"
चूंकि आपने वास्तव में मॉक मॉड्यूल के बारे में नहीं बताया है "gameModel"
मॉड्यूल।
उम्मीद है की वो मदद करदे।