0
我剛開始使用Jasmine來測試AngularJS應用程序。 我相信我做的所有的SpecRunner進口,但我得到的錯誤:
TypeError: $scope.$on is not a function
我使用這個在我的控制器如下:
app.controller('asstCtrl', function($scope, $uibModal, $interval, $document) {
$scope.$on('$includeContentLoaded', function() {
$scope.doStuff();
});
});
...
我SpecRunner測試看起來像這樣的:
describe('calculator', function(){
beforeEach(module('asst'));
it('basic', inject(function($controller) {
var scope = {},
ctrl = $controller('asstCtrl', {$scope:scope});
expect(scope.x).toBe(1);
}));
});
這是我進口:
- 公共/ JS /茉莉-2.4.0/jasmine.js
- 公共/ JS /茉莉-2.4.0 /茉莉html.js
- 公共/ JS /茉莉-2.4.0/boot.js
- 公共/ JS/jquery.min.js
- 公共/ JS/angular.js公共/ JS /角animate.min.js
- 公共/ JS /角mocks.js
- 公共/ JS /ui-bootstrap-tpls-0.14.2.min.js
該應用運行良好如果我從我的控制器中刪除了$ scope。$部分,測試運行。我必須在SpecRunner中做錯某些事情,或者在注入控制器時有所不同。誰能幫我這個?
編輯
測試結束這樣看:
describe('calculator', function(){
beforeEach(module('asst'));
var rootScope;
beforeEach(inject(function($rootScope) {
rootScope = $rootScope;
}));
it('basic', inject(function($controller) {
var scope = rootScope.$new(),
ctrl = $controller('asstCtrl', {$scope:scope});
expect(scope.x).toBe(1);
}));
});