我正在使用Jasmine/Karma來測試Angularjs代碼,而我是Jasmine的全新產品。我有一個基本的測試,使用expect(true).toEqual(true)
這是有效的,所以它看起來像設置是好的。有一次,我嘗試測試實際使用控制器的東西,我得到如下:
類型錯誤:「 $範圍$上(」未定義是不是一個函數(評估myEvent」,函數(事件數據)
我有幾個$ $範圍的方法,並不要緊什麼樣的順序,他們都在,它抱怨的第一個這裏的控制器是如何設置的摘錄:。
angular.module('myProject.dataType')
.controller('DataTypeController', ['$scope', '$state', '$rootScope', function($scope, $state, $rootScope) {
$scope.dataTypeId="";
...other stuff...
$scope.$on('myEvent', function(event, data) {
$scope.dataTypeId = "";
});
}]);
這裏是我的規格文件:
describe("Data Type Controller', function() {
beforeEach(module('myProject.dataType'));
var $controller;
beforeEach(inject(function(_$controller_) {
$controller = _$controller_;
}));
describe('Create type', function() {
it('basic test', function() {
var $scope = {};
var controller = $controller('DataTypeController', {'$scope': $scope});
expect(true).toEqual(true);
});
});
});
請注意,實際的代碼(而不是茉莉花)工作得很好。如果我註釋掉「var controller
...」這一行,測試通過。在這一點上,我其實並沒有嘗試調用任何東西,所以我不確定它爲什麼會觸及$scope.$on
,更不用說失敗了。我最好的猜測是,我在spec文件中設置了示波器的方式有些問題。
我已經檢查過文件版本(根據對類似問題的回答),並盡我所能確保沒有錯別字或胖手指參與。任何幫助是極大的讚賞。
我曾試圖在這之前,但我想我有$ rootScope代替_爲$ rootScope_。這工作。多謝! –