如何编写指令测试

时间:2014-12-17 19:48:24

标签: angularjs unit-testing jasmine karma-runner

我试着为指令编写测试用例,但我无法写。所以,伙计们可以分享正确的测试用例以及给定的directive.js的解释。

myapp.directive('number', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attr, form) {    
            element.bind('input', function(e) {
                $(this).val($(this).val().replace(/[^0-9 ]/gi, ''));
            });
        }
    }
});

该指令只能返回数字。

1 个答案:

答案 0 :(得分:0)

我找到了答案。我在这里发了答案,

describe('number', function() {
  var scope, element, $compile;
  beforeEach(module('myapp'));

  beforeEach(inject(function(_$compile_, $rootScope) {
    scope = $rootScope.$new();
    $compile =_$compile_;
    scope.testInput = "";
    element = angular.element('<input number ng-model="testInput">');
  }));

  var triggerKeyDown = function () {
    var e = $.Event("input");
    $(element).trigger(e);
  };

  it('should accept number input only', function() {
    $compile(element)(scope);
    scope.testInput = '1';
    scope.$digest();
    triggerKeyDown();
    expect(scope.testInput).toBe('1');
  }); 
});

此代码适用于我。