将$ event传递给单元测试用例mocha

时间:2016-11-23 15:57:59

标签: javascript angularjs unit-testing mocha karma-mocha

我的方法init我的controller如下所示,我该如何测试:

vm.init = function ($event) {
  var target = angular.element($event.target);
  if(target.prop('tagName').toUpperCase() == 'A') {
    return false;
  }
};

TestSpec

beforeEach(function(){

   vm.init = sinon.spy();
   compiled = $compile(template)($scope);

   $scope.$digest();   

   mockEvent = new Event('click');
   sinon.spy(mockEvent, 'preventDefault');
});

it('init() method should return false', function() {
    vm.init(mockEvent);      
});

TypeError: Cannot read property 'target' of undefined

我如何通过$event这里,下面是触发事件的html。

template = '<div id="fre"><span ng-click="init($event)"></span></div>';

1 个答案:

答案 0 :(得分:1)

您可以模拟$event创建一个目标属性设置为任何HTML字符串的对象。

it('init() method should return false', function() {
  var mockEvent = {
    target: '<a href="#">Click</a>'
  };
  expect(controller.init(mockEvent)).toBe(false)
});