0

私はジャスミンでunitTestingを行う方法を学び始めています。私はインターネットやSOで多くを読むが、私は自分の問題を解決することはできません。uibModalプロバイダー不明unitTest

私にはコントローラーを持った指令があります。そのコントローラは、要素をクリックすると$ uibModalというサービスを使ってモーダルを開きます。私はテストからそのサービスを注入しようとしていますが、できません。私はインスタンスを渡す必要があると言っているスレッドをたくさん読んでいます。私はそうしようとしていますが、私はできません。助けていただければ幸いです。

.controller('myController', ['$scope', '$uibModal', function($scope, $uibModal){ 
    var self = this; 
    //OTHER CODE 
    self.openMyModal = function(dataInput) { 
     var modalInstance = $uibModal.open({ 
      animation: true, 
      bindToController: true, 
      templateUrl: 'app/myComponent/modals/component-modal.html', 
      controllerAs: 'componentModalCtrl', 
      controller: 'componentModalController', 
      windowClass: 'semi-modal semi-modal--large', 
      scope: $scope 
     }) 
    } 
    //OTHER CODE 
} 

これは私がこのモーダルをモックしようとしているテストです。

beforeEach(function(){ 
    angular.mock.module('templates'); 
    angular.mock.module('app.components.myComponent'); 

    angular.mock.inject(function($compile, $rootScope, $templateCache, $controller){ 
     scope = $rootScope; 
     modalInstance = { close: function(){}, dismiss: function(){}, open: function(){} 
    }; 
    //Initializing element and doing compile and digest 
    controller = $controller('myController', {$scope: scope, $uibModal: modalInstance}); 

}) 

私はエラー

不明プロバイダ取得しています:$ uibModalProvider < - $ uibModalを。

私はこのサービスを別の方法で注入できますか?私は間違っているの?

P.S:私はこのTesting AngularUI Bootstrap modal instance controller

Angular ui bootstrap $uibModalInstance breaks down unit tests

Mocking $modal in AngularJS unit tests

答えて

0

は最後に、私はそれを解決しました。それは愚かな誤りだった。私は私のテストでは欠けていた追加のモジュールをインポートしました。その後、私は私のサービスを嘲笑し、このような問題なしに使用することができます。

angular.mock.inject(function($compile, $rootScope, $templateCache, $controller, $uibModal){ 
    scope = $rootScope; 
    uibModal = $uibModal; 
    element = angular.element('<directive-tree input-tree=inputTree subsystem=subsystem></directive-tree>'); 
    $compile(element)(scope); 
    scope.$digest(); 
    controller = $controller('directiveTreeController', {$scope: scope, $uibModal: uibModal}); 
    }); 
1

を読んだことがあるが、この方法を試してください。

beforeEach(module(function ($provide) { 
    $provide.service("$uibModal", function() { 
     // mock methods here 
    }); 
})); 
関連する問題