/ / त्रुटि: [$ इंजेक्टर: अनप्र] अज्ञात प्रदाता - मुझे लगता है कि मैंने स्पष्ट सामान की जाँच की है - कोणीयज, मोचा, कर्म-धावक

त्रुटि: [$ इंजेक्टर: unpr] अज्ञात प्रदाता - मुझे लगता है कि मैंने स्पष्ट सामग्री की जांच की है - कोणीय, मोचा, कर्म-धावक

इससे पहले कि मैं अपने यूनिट परीक्षण में प्रभावी ढंग से

var moduleName = "gameModel";
var providerName = "gameConstants";
angular.module(moduleName);
inject(function($injector) {
$injector.get(providerName);
});

मैं मॉड्यूल और निरंतर कार्यान्वयन से मॉड्यूल नाम और प्रदाता नाम को कॉपी-पेस्ट कर रहा हूं, इसलिए मैं नामों में एक टाइपो नहीं हूं, इसलिए मैं इस क्रम में फाइलें लोड कर रहा हूं:

  1. कोणीय
  2. कोणीय mocks
  3. Js फ़ाइल में मॉड्यूल "gameModel" है - जिसकी कोई निर्भरता नहीं है
  4. Js फ़ाइल में निरंतर प्रदाता "gameConstants" है - जिसकी कोई निर्भरता नहीं है
  5. इकाई परीक्षण फ़ाइल .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" मॉड्यूल।

उम्मीद है की वो मदद करदे।