【发布时间】:2015-09-25 08:43:37
【问题描述】:
我有一个带有简单 $scope.$on 的控制器:
app.controller('MyController', function($scope) {
$scope.$on("myBroadRcvr", function(event, data) {
$scope.name = data.name;
$scope.empID = data.empID;
});
});
我尝试过这样的单元测试:
describe('MyController', function () {
var $scope, super_controller;
beforeEach(function(){
module('myApp');
inject(function($rootScope, $controller){
$scope = $rootScope.$new();
spyOn($scope, '$on');
super_controller = $controller('MyController', {$scope: $scope});
});
});
it('should receive name as test', function (){
var myData = {name: 'test', empID: 'eg7gg'},
var sub_scope = $scope.$new();
sub_scope.$broadcast('myBroadRcvr', myData);
expect($scope.$on).toHaveBeenCalled();
expect($scope.name).toBe('test');
});
});
通过以上我得到:
Expected undefined to be 'test'.
【问题讨论】:
-
expect($scope.$on).toHaveBeenCalled();也应该失败,不是吗。 -
@Pavlo - 这里似乎没有失败
标签: javascript angularjs jasmine karma-jasmine jasmine-jquery