我有控制器代码:
$scope.$on('load', function (event) {
$scope.getData();
event.stopPropagation();
});
和测试代码:
it('$on load', function(event) {
var controller=createController();
spyOn(scope, '$on').andCallThrough();// I have also tried to spy scope getData
scope.$broadcast('load');
expect(scope.$on).toHaveBeenCalledwith("load");
});
TypeError:event.stopPropagation不是函数
如何从单元测试中定义调用中的参数?
答案 0 :(得分:2)
以不同的方式思考......
如果在示波器上触发load事件,那么你应该调用getData ...
在getData上放置一个间谍,然后你可以期待该函数被调用。
我测试这种方式的方法是将间谍放在$ broadcast上。
spyOn($scope, '$broadcast').and.callThrough();
spyOn(event, 'preventDefault').and.callFake(function() {});
然后在描述块中
describe('load event', function() {
it('should call getData method', function() {
$scope.$broadcast('load');
expect($scope.getData).toHaveBeenCalled();
});
});