मैं एक नियंत्रक का परीक्षण करने की कोशिश कर रहा हूं जो कोणीय के संसाधन का उपयोग करता है।
function PermissionsCtrl($scope, $resource, $cookies) {
var Object = $resource('/v1/objects/:id');
loadObjects();
function loadObjects() {
$scope.myAppObjects = new Array();
var data = AppObject.get({find: '{"app_id": '+wtm.app_id+'}'},
function(){
if (data.results) {
for(var i = 0; i< data.results.length; i++) {
if(!data.results[i].is_deleted) {
(function(i){
$scope.objects(data.results[i]);
}(i));
}
}
}
},
function(error){console.log(error);});
}
और यहां परीक्षण कोड है।
var apiServer = "...";
var app_id = 999
var mock_object_data = {...};
describe('apps permissionsCtrl', function(){
var scope, ctrl, $httpBackend;
// Create a matcher for comparing data
beforeEach(function() {
this.addMatchers({
toEqualData: function(expected) {
return angular.equals(this.actual, expected);
}
});
});
// Create the controller with injected data/services
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller, $resource) {
$httpBackend = _$httpBackend_;
// cookie data to inject
var cookies = new Array();
cookies['id'] = '...'; // just needs to be declared
$httpBackend.expectGET(apiServer+'/v1/app_objects? find=%7B%22app_id%22:'+app_id+'+%7D&access_token=' + cookies['id'])
.respond(mock_object_data);
var $injector = angular.injector(['ng', 'ngResource']);
var $resource = $injector.get('$resource');
scope = $rootScope.$new();
ctrl = $controller(PermissionsCtrl, {$scope: scope, $cookies: cookies, $resource: $resource});
}));
it('should put object data into $scope', function() {
$httpBackend.flush();
expect(scope.objects).toEqualData(mock_object_data);
}); });
जब मैं इस चलाने मैं लाइन, जहां मैं अपने नियंत्रक बनाने की कोशिश में
Error: Unknown provider: $resourceProvider <- $resource
मिलता है। मुझे समझ में नहीं आता कि यह मेरे नियंत्रक में इंजेक्ट कैसे करें और इससे कोई फर्क नहीं पड़ता कि मैं क्या त्रुटि करता हूं। मैंने कोशिश की है कि कुछ चीजें हैं
- एक खाली नकली वस्तु घोषित करना और मेरे कुकीज़ चर के समान इसे गुजरना। मुझे लगता है कि यह वास्तव में एक बुरा समाधान है क्योंकि मैं वास्तव में सेवा का उपयोग करना चाहता हूं।
- स्कोप मॉक की नकल करना और इसे मेरे इंजेक्शन फ़ंक्शन में पास करना और $ संसाधन पास करना। मेरे नियंत्रक को $ नया()।
- कुछ भी नहीं कर रहा है और उम्मीद है कि httpBackend इसे कवर करेगा क्योंकि आखिरकार वैसे भी इसे बुलाया जाता है। वोजता जीना ने इसे ध्वनि बनाया जैसे काम करेगा लेकिन कोई पासा नहीं होगा।
- हल्के उपशीर्षक। संतुष्ट लेकिन बहुत प्रभावी नहीं है। निम्न कोड के साथ
$resource
का दृष्टांत को
क्या आप एक और पूर्ण कोड नमूना साझा कर सकते हैं? एंगुलर और जैस्मीन के लिए नया व्यक्ति होने के नाते, मुझे इसके चारों ओर अपने सिर को लपेटने में परेशानी होती है। –
@ संक्षिप्त नाम तो आपने नियंत्रक का परीक्षण करने के लिए 'app.js' शामिल किया था? – Deeptechtons
लेकिन क्या आपकी सेवा का परीक्षण करते समय आपको वही समस्या नहीं मिलेगी? –