2013-08-27 14 views
5

मेरे पास निम्नलिखित यूनिट परीक्षण हैं, और किसी कारण से दूसरा परीक्षण अन्य परीक्षणों को विफल करता है।एंगुलरजेएस जैस्मीन यूनिट टेस्ट

beforeEach(inject(function ($rootScope, _$httpBackend_, $controller, $location, mockedResource) { 
    scope = $rootScope.$new(); 
    httpBackend = _$httpBackend_; 
    locationService = $location; 

    ctrlDependencies = { 
     $scope: scope, 
     resource: mockedResource, 
    } 

    var ctrl = $controller('myController', ctrlDependencies); 
})); 

it('should redirect to a new page', function() { 
    scope.pageRedirectFunction(); 
    expect(locationService.path()).toBe('/newpage') 
}); 

it('should delete an epic resource', function() { 
    httpBackend.expectGET('/api/v1/epic/1').respond({}); 
    httpBackend.expectDELETE('/api/v1/epic/1').respond({}); 

    // Run the deletion function 
    scope.deleteEpicResource() 

    httpBackend.flush() // This line seems to be the rebelious one 

    expect(scope.epicResources.length).toEqual(0) 
}) 

मैं लाइन है कि करने के लिए त्रुटियों का कारण लगता है यह पता लगाने में कामयाब रहे, और यह httpBackend.flush() लाइन है। फ्लश फ़ंक्शन अजीब व्यवहार क्यों कर रहा है?

वास्तविक त्रुटि मैं टर्मिनल में आदेश karma start चलने से मिलता है, यह है:

Delaying execution, these browsers are not ready: Chrome 29.0 .... 
थोड़ी देर के बाद

, क्रोम सत्र तो दुर्घटनाओं।

+0

आपको क्या त्रुटि मिली? इसके बिना कोई भी इसके बारे में अनुमान लगा सकता है। – zsong

+0

बेशक! क्या एक भयानक गलती है। अब त्रुटि के साथ अद्यतन कर रहा है ... – Sneaksta

+0

क्या होता है यह देखने के लिए कर्म के लॉग स्तर को डीबग करने के लिए प्रयास करें। – madhead

उत्तर

2

परीक्षण के बारे में एक अल्पज्ञात टिप /: इसके अलावा, आप ngMocks मॉड्यूल लोड करने के लिए प्रयास कर सकते हैं

आप स्पष्ट रूप में अनुरोध बुला नहीं कर रहे हैं अपने परीक्षण (यानी यह एक और समारोह के माध्यम से बुला), अनुरोध, कोणीय से पचा नहीं किया जाएगा तो यह ऐसा प्रतीत अनुरोध के रूप में करता है, तो कभी नहीं निकाल दिया (जब आप flush() कहते हैं)

अपने httpBackend.flush() कॉल करने से पहले scope.$digest() चलाने की कोशिश करें बनाता है, कि चाल कर सकते हैं। अधिक जानकारी के लिए this thread देखें।

+0

मैंने इसे थोड़ी देर पहले तय किया, लेकिन मुझे याद नहीं आया कि मैंने कैसे तय किया यह। आपकी प्रतिक्रिया पढ़ने पर मुझे एहसास हुआ कि मैं उन सभी अनुरोधों के लिए फ्लश() को कॉल नहीं कर रहा था। यह ज्यादातर एक समस्या थी क्योंकि जैसे ही मेरे नियंत्रक को लोड किया गया था, एपीआई अनुरोध लोड हो रहे थे, लेकिन मैं उनके बारे में भूल गया था। – Sneaksta

+0

$ digest() जोड़ना क्रोम क्रैशिंग के बारे में चिंता का समाधान करता है? – kfitzpatrick

0

क्या आपके पास अपने परीक्षण से पहले कोणीय-mocks.js शामिल है? चमेली के साथ async अनुरोध और AngularJS मजाक

beforeEach(module("ngMock")); 
संबंधित मुद्दे