ユニットテスト用にJasmine/Karmaを使用しています。モデルの表示にngDialogを使用していますが、ngDialogを呼び出すコントローラのユニットテストケースが必要です。 コントローラ:ジャスミンを使用したユニットテストでngDialog.openを呼び出す方法
(function() {
'use strict';
angular.module('app')
.controller('myController', MyController);
CongratulationsController.$inject = ['$scope',
'$rootScope',
'ngDialog'];
function CongratulationsController($scope, $rootScope, ngDialog) {
$scope.myData = {name: 'test',
grade: '5'};
$scope.modal1 = function() {
ngDialog.open({ template: 'views/modal/modal-1html',
className: 'ngdialog-theme-default',
controller: 'ModalController',
scope: $scope});
};
$scope.modal2 = function() {
ngDialog.open({ template: 'views/modal/modal-2html',
className: 'ngdialog-theme-default',
controller: 'ModalController',
scope: $scope});
};
}
}());
はここに私のユニットテストです:
'use strict';
describe('Controller: MyController', function() {
var MyController,location, scope, ngDialogInstance;
ngDialogInstance = {
open: jasmine.createSpy('ngDialogInstance.open'),
dismiss: jasmine.createSpy('modalInstance.dismiss')
};
// load the controller's module
beforeEach(module('app'));
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $location, $rootScope, _ngDialog_) {
scope = $rootScope.$new();
MyController= $controller('myController', {$scope: scope ,
_ngDialog_: ngDialogInstance
});
location = $location;
spyOn(scope, 'openModal1');
}));
it('test controller exists', function() {
expect(!!MyController).toBe(true);
});
it('test controller calls ng dialog when it calls openModel method', function() {
scope.openModal1();
expect(scope.openModal1).toHaveBeenCalled();
expect(ngDialogInstance.open).toHaveBeenCalled();
});
});
私はエラーの下になって、abooveテストケースを実行しています。 が失敗しましたspy ngDialogInstance.openが呼び出されていると予想されます。
どれでもこれを手伝うことができます。