0

我正在做一个 AngularJS 单元测试并使用 Karma - Coverage 来查看结果。这是我的代码。

todomvc.directive('todoBlur', function () {
  return function (scope, elem, attrs) {
    elem.bind('blur', function () {
        scope.$apply(attrs.todoBlur);
    });

    scope.$on('$destroy', function () {
        elem.unbind('blur');
    });
  };
});

我写了以下测试用例。

describe('TodoBlur', function() {
  var $compile,
    $rootScope;
  beforeEach(module('todomvc'));
  beforeEach(inject(function(_$compile_, _$rootScope_){
    $compile = _$compile_;
    $rootScope = _$rootScope_;
  }));


  it('T', function() {
    var element = $compile("<todoBlur></todoBlur>")($rootScope);
    $rootScope.$digest();
    element.blur();
    var e = $.Event('keydown');
    e.which = 27;
    $rootScope.trigger(e);
    element.triggerHandler('keydown', 27);
    element.triggerHandler('keydown', 28);
  });
});

如您所见,我尝试了许多代码来尝试测试,keydown但它们都不起作用。代码覆盖率报告中的结果保持不变。我该如何测试它?我是 AngularJS 及其单元测试的新手,我用谷歌搜索仍然找不到任何解决方案。

编辑:我尝试了单元测试 Angular 指令点击处理程序并修改了我的代码。但它仍然不起作用。

beforeEach(module('todomvc'));
describe('myCtrl', function () {

  var $scope, $rootScope;

  beforeEach(inject(function ($controller, _$rootScope_) {
    $scope = $rootScope.$new();
    $controller('myCtrl', { $scope: $scope });
    $rootScope = _$rootScope_;
  }));

  describe('T', function () {

    var element;

    beforeEach(function () {
        element = angular.element('<todoBlur/>');
        $compile(element)(scope);
        $scope.$digest();
    });


  });
});
4

0 回答 0