【发布时间】:2017-04-20 04:32:25
【问题描述】:
我正在使用 Jasmine/Karma 测试 Angularjs 代码,而且我是 Jasmine 的新手。我使用expect(true).toEqual(true) 进行了基本测试,该测试有效,因此设置似乎还可以。一旦我尝试测试实际使用控制器的东西,我会得到以下信息:
TypeError: undefined is not a function(评估 '$scope.$on('myEvent', function(event,data)
我有几个 $scope.$on 方法,它们的顺序无关紧要,它抱怨第一个。以下是如何设置控制器的摘录:
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);
});
});
});
请注意,实际代码(不是 Jasmine)可以正常工作。如果我注释掉“var controller...”行,则测试通过。在这一点上,我实际上并没有尝试调用任何东西,所以我不确定它为什么会碰到$scope.$on,更不用说失败了。我最好的猜测是我在规范文件中设置范围的方式有问题。
我检查了文件版本(基于对类似问题的回答),并尽我所能确保没有错别字或粗手指。非常感谢任何帮助。
【问题讨论】:
标签: javascript angularjs jasmine