2016-06-12 16 views
1

Neu im Jasmine- und Angular-Test. Ich teste einen Controller in meinem Code und für den Moment möchte ich nur überprüfen, ob mein Controller definiert wurde oder nicht. Ich bekomme den Fehler Unknown provider: $modalProvider <- $modal, weil es auf $modal Service abhängt, wie ich es in meinem Controller verwende. Hier ist mein Controller-Code:

(function(){ 

angular.module('app.uploadedReleases') 
     .controller('UploadedReleasesController', UploadedReleasesController) 
     .controller('ModalController', ModalController) 
     .controller('StatusModalController', StatusModalController); 

var ACTION = { 
    CANCEL: 0, 
    SAVE: 1, 
    DELETE: 2, 
    SUBMIT: 3, 
    REFRESH: 4 
}; 

UploadedReleasesController.$inject = ['$log', '$scope', '$filter', '$modal', 'ReleaseService', 'TrackService', 'APP_CONFIG', 'DeliveriesService']; 
function UploadedReleasesController ($log, $scope, $filter, $modal, releaseService, trackService, APP_CONFIG, deliveriesService){ 

// and in the same controller I define the Modal Controller as follows 
..... 
.... 
function ModalController($modalInstance, formAlbum, isRelease, formTrack){ 
    var vm = this; 


    vm.formTrackData = formTrack; 

    function saveReleaseConfirm(){ 
     $modalInstance.close({action: ACTION.SAVE}); 
    } 

    function removeTrack(){ 
     $modalInstance.close({action: ACTION.DELETE}); 
    } 

    function removeAlbum(){ 
     $modalInstance.close({action: ACTION.DELETE}); 
    } 

    function cancel(){ 
     $modalInstance.close({action: ACTION.CANCEL}); 
    } 

    function createDeliveryConfirm(){ 
     $modalInstance.close({action: ACTION.SUBMIT}); 
    } 
} 

Jetzt in meinem Jasmin Test, ich definieren es wie folgt:

describe('app module', function() { 
    var vm, scope, releaseService, trackService, deliveriesService; 

    beforeEach(module('app.uploadedReleases'));  // Main module name 

    beforeEach(module('app.config'));  // for the APP_CONFIG dependency 
    beforeEach(module('auth'));    // for the $auth dependency 
    beforeEach(function() { 

    }); 


    beforeEach(inject(function($controller, $log, $rootScope, $filter, $modal, APP_CONFIG) { 

     scope = $rootScope.$new(); 
     vm = $controller('UploadedReleasesController', {'APP_CONFIG':APP_CONFIG, '$log':$log, '$scope':scope, '$filter':$filter, '$modal':$modal, 
      'ReleaseService':releaseService, 'TrackService':trackService, 'DeliveriesService':deliveriesService}); 

    })); 


    describe("Tests UploadedReleases controller to be defined", function() { 

     it("should be created successfully", function() { 
      expect(vm).toBeDefined(); 
     }); 
    }); 

Jede Idee, wie soll ich $ modal injizieren des Problems zu entledigen? Danke

Antwort

1

So können Sie $modal in Ihre Spezifikation injizieren.

describe('app module', function() { 
var vm, scope, releaseService, trackService, deliveriesService, $modal; 

beforeEach(module('app.uploadedReleases'));  // Main module name 

beforeEach(module('app.config'));  // for the APP_CONFIG dependency 
beforeEach(module('auth'));    // for the $auth dependency 
beforeEach(function() { 

}); 


beforeEach(inject(function($controller, $log, $rootScope, $filter, $modal, APP_CONFIG, _$modal_) { 

    scope = $rootScope.$new(); 
    $modal = _$modal_ 
    vm = $controller('UploadedReleasesController', { 
     'APP_CONFIG':APP_CONFIG, 
     '$log':$log, 
     '$scope':scope, 
     '$filter':$filter, 
     '$modal':_$modal_, 
     'ReleaseService':releaseService, 
     'TrackService':trackService, 
     'DeliveriesService':deliveriesService 
    }); 

})); 


describe("Tests UploadedReleases controller to be defined", function() { 

    it("should be created successfully", function() { 
     expect(vm).toBeDefined(); 
    }); 
}); 
Verwandte Themen