2013-07-17 5 views
22

निम्नलिखित मेरी नियंत्रक में है:जैस्मीन - फ़ंक्शन के भीतर फ़ंक्शन कॉल पर जासूसी कैसे करें?

$scope.addRangesAndSquare = function() { 
    $scope.addLeftRange(); 
    $scope.addCenterSquare(); 
    $scope.addRightRange(); 
} 

और मैं $scope.addLeftRange() पर जासूसी करना चाहते हैं, ताकि जब $scope.addRangesAndSquare कहा जाता है तो $scope.addLeftRange() है:

it('expect addLeftRange to be called after calling addRangesAndSquare', function() { 
    spyOn(scope ,'addRangesAndSquare'); 
    spyOn(scope, 'addLeftRange'); 
    scope.addRangesAndSquare(); 
    expect(scope.addLeftRange).toHaveBeenCalled(); 
}); 

यह कैसे किया जा सकता है?

उत्तर

35

डिफ़ॉल्ट रूप से, जब आप spyOnजैस्मीन के साथ उपयोग करते हैं, तो यह काम करता है और वास्तव में इसके भीतर कुछ भी निष्पादित नहीं करता है। आप आगे समारोह के भीतर कॉल का परीक्षण करना चाहते हैं, तो आप, .andCallThrough() कॉल करने के लिए तो जैसे की आवश्यकता होगी:

spyOn($scope, 'addRangesAndSquare').andCallThrough(); 

है कि यह करना चाहिए।

+0

धन्यवाद। इसके अलावा, मुझे अन्य दो आंतरिक कार्यों में एक जासूसी टिप्पणी या जोड़ना पड़ा, अन्यथा यह एक त्रुटि फेंक देगा। –

+21

जैस्मीन 2 में, इसे 'spyOn ($ स्कोप,' addRangesAndSquare ') में बदल दिया गया है। और.callThrough(); ' – fracz

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