【问题标题】:passing $event to unit test case mocha将 $event 传递给单元测试用例 mocha
【发布时间】:2016-11-23 15:57:59
【问题描述】:

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

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

测试规范

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>';

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 如果我想检查 $event.preventDefault() 怎么办?
    • 您可以添加 preventDefault 属性作为函数或间谍。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多