2013-01-25 15 views
22

के साथ console.error() पर जासूसी मैं वास्तव में जावास्क्रिप्ट के साथ-साथ जैस्मीन के लिए नया हूं। तो यह वास्तव में कुछ स्पष्ट हो सकता है जो मेरी समस्या को हल करता है लेकिन मैं इसे नहीं देख सकता।जैस्मीन

मैं यह जांचना चाहता हूं कि लोड होने के दौरान (पहले से मौजूद) जावास्क्रिप्ट एप्लिकेशन console.error() पर कॉल करता है या नहीं। मैं वास्तव में जैस्मीन के साथ इसका एहसास करने का तरीका नहीं देखता हूं। मैंने SpecRunner.html में जावास्क्रिप्ट फ़ाइल के साथ-साथ spec फ़ाइल भी शामिल की है। लेकिन मैं इसे लेता हूं कि किसी भी तरह से यह जांचने के लिए एप्लिकेशन को "तत्काल" करने की आवश्यकता है कि क्या यह कंसोल पर कोई त्रुटि फेंकता है, है ना?

या मुझे इस उद्देश्य के लिए केवल SpecRunner.html कोड ऐप के HTML कोड में शामिल करना चाहिए?

उत्तर

38

आप console.error इस तरह की जासूसी कर सकते हैं:

beforeEach(function(){ 
    spyOn(console, 'error'); 
}) 

it('should print error to console', function(){ 
    yourApp.start(); 
    expect(console.error).toHaveBeenCalled(); 
}) 
+0

हाँ, यह मैं क्या मान रहा था। लेकिन यह इसे नहीं बनाएगा। ऐप को संरचित करने के तरीके के साथ ऐसा कुछ हो सकता है। लेकिन मदद के लिए धन्यवाद! – Christian

+0

ठीक है, मैंने फिर से जांच की है, कुछ बदलाव किए हैं और यह काम किया है। मुझे लगता है कि मुझे बस इतना आश्वासन था कि यह वास्तविक तरीका है जो इसे काम करना चाहिए। एक बार फिर धन्यवाद! – Christian

+1

अब '.and.clickThrough(); 'या' और.callFake (function() {...}) का उपयोग करने के लिए अब और अधिक उपयुक्त है; जैस्मीन 2.x का उपयोग करके, नग्न फ़ंक्शन को छोड़ने के बजाय कार्यान्वयन। उम्मीद है की वो मदद करदे। सी§ – CSS

0

आप इस तरह मानक console.error समारोह ओवरराइड कर सकते हैं:

//call the error function before it is overriden 
console.error('foo'); 

//override the error function (the immediate call function pattern is used for data hiding) 
console.error = (function() { 
    //save a reference to the original error function. 
    var originalConsole = console.error; 
    //this is the function that will be used instead of the error function 
    function myError() { 
    alert('Error is called. '); 
    //the arguments array contains the arguments that was used when console.error() was called 
    originalConsole.apply(this, arguments); 
    } 
    //return the function which will be assigned to console.error 
    return myError; 
})(); 

//now the alert will be shown in addition to the normal functionality of the error function 
console.error('bar'); 

यह समाधान जैस्मिन या कुछ और के साथ काम करता है। बस कोड को अन्य कोड से पहले ऊपर रखें और console.error() पर इसके बाद कोई भी कॉल ओवरराइड फ़ंक्शन को कॉल करेगा।

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