मैं अंगुलरजेएस (एक और कहानी पूरी तरह से) के लिए कुछ टीडीडी पर काम कर रहा हूं और ऐसी परिस्थिति में भाग गया जहां मेरी पहले से प्रत्येक कॉल को निष्पादित नहीं किया जा रहा है। मैंने इसे नीचे दिए गए उदाहरण में घटा दिया।एंगुलरजेएस/कर्म परीक्षण: पहले से निष्पादित नहीं किया गया
यह काम करता है के रूप में तथ्य यह है कि beforeEach में console.log संदेशों और यह दोनों दिखाई देते हैं इसका सबूत:,
describe('userApp', function(){
beforeEach(function(){
console.log("in beforeEach...");
});
it('should be able to log something', function(){
console.log("in it...");
});
});
यह काम नहीं करता के रूप में तथ्य यह है कि इसका सबूत में console.log संदेश beforeEach प्रदर्शित किया जाता है नहीं और यह विफल रहता है जब $ log.info करने का प्रयास और फेंकता त्रुटि संदेश: TypeError: Cannot read property 'info' of undefined
describe('userApp', function(){
var $log;
beforeEach(module('userApp', function($provide) {
console.log("in beforeEach...");
// Output messages
$provide.value('$log', console);
}));
it('should be able to log something', function(){
console.log("in it...");
$log.info("Using $log for logging...");
});
});
मैं कोणीय 1.3.15, कर्म 0.12.31, चमेली 2.3.4 का उपयोग कर रहा हूँ। शायद कुछ स्पष्ट मैं देख रहा हूं ...
संपादित करें: माइकल रेडियोनोव की व्याख्या बहुत उपयोगी है; हालांकि, मुझे समझ में नहीं आता कि यह संशोधित कोड अभी भी एक ही त्रुटि को फेंकता है।
describe('userApp', function(){
console.log("starting TEST3"); <=== this prints
var $log;
beforeEach(function() {
console.log("TEST3: in beforeEach..."); <=== this prints
module('userApp', function($provide, _$log_) {
$log = _$log_;
console.log("TEST3: in beforeEach/module..."); <=== never executed
// Output messages
$provide.value('$log', console);
$log.info("TEST3: calling $log in beforeEach...");
})
});
it('should be able to log something', function(){
console.log("TEST3: in it...");
$log.info("TEST3: Using $log for logging..."); <=== $log undefined err
});
});
इसके अलावा, यह में कोड लगता है "मॉड्यूल ('userApp' ..." निष्पादित कभी नहीं ...?
धन्यवाद, माइकल ... कि मदद करने के लिए शुरू होता है
plunker देखें। मैं इस पोस्ट को एक और नमूने के साथ अपडेट करने जा रहा हूं जो ऐसा लगता है जैसे इसे काम करना चाहिए। यह इस तरह लग रहा है - भले ही पहले एच() सभी को निष्पादित किया गया हो, फिर भी उनके अंदर मॉड्यूल() कोड एक ही समय में निष्पादित नहीं होता है? – JESii
अपने अपडेट में आप 'मॉड्यूल()' का उपयोग करके '_ $ log_' इंजेक्ट करने का प्रयास करते हैं, लेकिन यह काम नहीं करेगा। 'मॉड्यूल() 'केवल मॉड्यूल पंजीकृत करने के लिए है जिसे आप इंजेक्ट()' कहते हैं तो निष्पादित किया जाएगा। इंजेक्शन इंजेक्टर पर काम है। यदि आप प्रत्येक से पहले 'इंजेक्ट()' को यहां कॉल करते हैं, तो इसे "* एक ही समय *" माना जा सकता है। मेरे नमूने में मैंने इसे 'इंजेक्ट' को 'पहले से' पर ले जाया है ताकि यह थोड़ा और स्पष्ट हो सके कि –
धन्यवाद, माइकल; आपने इसे समझाए जाने का अच्छा काम किया है। हालांकि, यह वह जगह है जहां कोणीय पागल हो रहा है, आईएमओ। अगर मैं पहले 'इंजेक्ट' डालता हूं, उसके बाद 'मॉड्यूल' कथन के बाद, मुझे "इंजेक्टर पहले ही बनाया गया है, मॉड्यूल पंजीकृत नहीं कर सकता!"। एसओ पर http: // stackoverflow पर इसके बारे में पहले से ही एक चर्चा है।कॉम/प्रश्न/24 9 00067/इंजेक्टर-पहले से निर्मित-कर-रजिस्टर-ए-मॉड्यूल कई अलग-अलग दृष्टिकोणों के साथ ... @gilamarn द्वारा उत्तर पर तर्क को नोट करें। ऐसा लगता है कि कोणीय में परीक्षण बहुत दृढ़ता से है। – JESii