2015-01-03 16 views
12

मुझे यह त्रुटि मिल रही है: "त्रुटि: [$ इंजेक्टर: unpr] अज्ञात प्रदाता: $ प्रदान करने वाला प्रदाता < - $ प्रदान करें"। मैं चारों ओर घूमने के घंटों के लिए अटक गया था। मैंने कई उदाहरण देखे हैं जहां यह इस तरह से किया जाता है और मुझे यकीन है कि क्या करना है।

"use strict"; 


describe('Controller: ProfileCtrl', function ($provide) { 
    //load the controller's module 
    var mockProfileFactory; 
    beforeEach(function() { 
     module('profileUpdate', function($provide) { 
      mockProfileFactory = { 
       get: function() { 
        id: 16 
       } 
      }; 
      $provide.value('Profile', mockProfileFactory); 
     }); 
     var ProfileCtrl; 
     var scope; 

    inject(function ($controller, $rootScope, $provide) { 

     scope = $rootScope.$new(); 
     ProfileCtrl = $controller('ProfileCtrl', { 
      $scope: scope 
     }); 
    }); 
}); 

it('should have 3 items', function() { 
    var things = scope.range(1,3,1); 
    expect(things).toBe(3); 
}); 

});

उत्तर

16

आपके पास कुछ बोनस प्रदान किए गए थे। विशेष रूप से इंजेक्शन कथन में से एक। आप प्रदान नहीं कर सकते हैं, यह केवल मॉड्यूल के लिए उपलब्ध है। नीचे मेरे परिवर्तनों का प्रयास करें।

"use strict"; 


// SEE no provide here 
describe('Controller: ProfileCtrl', function() { 
    //load the controller's module 
    var mockProfileFactory; 
    beforeEach(function() { 
     module('profileUpdate', function($provide) { 
      mockProfileFactory = { 
       get: function() { 
        id: 16 
       } 
      }; 
      $provide.value('Profile', mockProfileFactory); 
     }); 
     var ProfileCtrl; 
     var scope; 
     // SEE and neither in the inject here 
    inject(function ($controller, $rootScope) { 

     scope = $rootScope.$new(); 
     ProfileCtrl = $controller('ProfileCtrl', { 
      $scope: scope 
     }); 
    }); 
}); 

it('should have 3 items', function() { 
    var things = scope.range(1,3,1); 
    expect(things).toBe(3); 
}); 

});

प्रदाताओं में से AngularJS अवधारणा के बारे में पढ़ने है, और यह भी इस गाइड के खिलाफ अपने कोड की जाँच करें:

http://nathanleclaire.com/blog/2013/12/13/how-to-unit-test-controllers-in-angularjs-without-setting-your-hair-on-fire/

+1

मैं इतने लंबे समय है कि मैं अपने मन खो दिया है और नोटिस नहीं किया था के लिए इसे ठीक करने की कोशिश कर रहा अतिरिक्त $ मेरे पहले प्रयास से प्रदान करते हैं। धन्यवाद, $ प्रदान करने के बाद, यह चलता है! और लिंक के लिए धन्यवाद, मैं इसे जांचना सुनिश्चित कर दूंगा: डी – user2170878

+0

'// SEE और न ही इंजेक्ट में' क्या मतलब है? – isherwood

+0

महत्वपूर्ण परिवर्तनों पर ध्यान आकर्षित करना (जहां मैंने $ प्रदान किया है) –

1

$ प्रदान एक प्रदाता है, आप केवल $नियंत्रक विधि में नहीं, app.config विधि में $ प्रदान करते हैं।

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