私は videogular を使用しており、videogular ディレクティブを必要とするディレクティブを作成しました。
これはすべて正常に機能しますが、ディレクティブを単体テストしたくありません。
API を介して返されるデータを操作できるように、videogular ディレクティブをモックしたいと思います。
しかし、私のディレクティブは常に videogular の具体的な実装を取り上げています。
以下のディレクティブの videogular モジュールの実装をモックしようとしていますが、うまくいきません。次に、単体テストで通常行うように、独自のモジュールをモックします。
beforeEach(angular.mock.module('com.2fdevs.videogular'));
beforeEach(angular.mock.module('com.2fdevs.videogular'),function($provide,$controllerProvider){
videogular = function(){
return {
template: '<video class="test"></video>',
transclude: true
}
};
$controllerProvider.register('vgController', function(_$scope_){
$scope = _$scope_;
$scope.totalTime = 100;
});
$provide.factory('videogularDirective', videogular);
});
同じ方法で自分のモジュールにも注入しようとしましたが、同じ結果が得られました。
具体的な実装ではなく、モックを使用するにはどうすればよいですか?
私は今持っています
beforeEach(angular.mock.module('com.2fdevs.videogular'));
beforeEach(angular.mock.module('com.2fdevs.videogular'),function($provide,$controllerProvider,$compileProvider){
videogular = function(){
return {
template: '<video class="test"></video>',
transclude: true
}
};
$provide.factory('videogularDirective', videogular);
$compileProvider.directive('videogularDirective', videogular);
});
beforeEach(angular.mock.module('irisApp'));
beforeEach(angular.mock.module('irisApp', function ($provide) {
$provide.constant('LoggingService', require('../../../server/mocks/LoggingService.mock'));
$provide.constant('run', {});
}));
beforeEach(angular.mock.inject(function (_$compile_, _$rootScope_) {
$rootScope = _$rootScope_;
$compile = _$compile_;
}));
ただし、具象ディレクティブは引き続き使用します。