我正在使用AngularJS應用程序。我希望能夠通過這個應用程序實現單元測試。目前,我正在爲單元測試我的一個指令而苦苦掙扎。在這個時候,我有一個模塊的設置如下:在AngularJS中有一個控制器的單元測試指令
angular.module('my.module', [])
.controller('myCtrl', function ($scope, $element) {
// Directive specific business logic goes here
})
.directive('myDirective', function() {
return {
restrict: 'E',
transclude: true,
replace: true,
scope: {
title:'=',
state:'@'
},
templateUrl: 'myHtml.tpl.html',
controller: myCtrl
};
})
;
我已經出離我的指令分割我的控制器,因爲我需要能夠進行單元測試控制器。此代碼在應用程序中工作。但是,當我嘗試進行單元測試時遇到問題。我遇到了問題,因爲我無法弄清楚如何從單元測試中將$元素注入控制器。目前,我有以下測試設置:
describe('my.module', function() {
var $scope;
var myCtrl;
beforeEach(module('myApp'));
beforeEach(inject(function ($controller, $rootScope, $element) {
$scope = $rootScope.$new();
myCtrl = $controller('myCtrl', { $scope: $scope });
}));
it('should create controller', inject(function() {
expect(testCtrl).toBeDefined();
}));
it('should create the directive', inject(function ($rootScope, $compile, $log) {
var d = angular.element('<my-directive></my-directive>');
$compile(d)($rootScope);
$scope.$digest();
expect($log.assertEmpty).not.toThrow();
}));
});
$ element是自動注入指令的東西。但是,我無法弄清楚如何將其注入控制器。我需要這樣做,以便我可以進行單元測試。我該怎麼做呢?
謝謝!
當我嘗試你已經顯示的方法時,我收到一個錯誤:'未知的提供者:$ elementProvider < - $ element'。你有沒有可能試試我的小提琴?對於我的生活,我無法弄清楚這一點。 – user2871401
$元素是你的控制器的一個參數,我只是拿起了我見過的代碼,但顯然它沒有被使用,所以你可以刪除注入器和函數createController。 – Snoozer
兩種注入$元素的方法都是相等的...... –