用茉莉花测试测试ng变化

Testing ng-change with Jasmine test?

本文关键字:测试 变化 ng 茉莉花      更新时间:2023-09-26

我正在使用此指令来延迟调用ng-change函数。我被迫使用 Angular 1.2.4,所以我没有使用去抖动的选项。

我只是需要一些帮助为此编写测试。我想我需要在茉莉花测试中以某种方式触发 ng 变化,但无法弄清楚。这是我到目前为止所拥有的:

describe('ng delay', function() {
  var html = '<input type="text" ng-model="model" ng-change="change()" ng-delay="500" />';
  beforeEach(inject(function($injector) {
    $compile = $injector.get('$compile');
    $timeout = $injector.get('$timeout');
    $scope = $injector.get('$rootScope').$new();
    $scope.model = '';
    $scope.change = function() {
      console.log('change');
    });
  }));
  it('should have a 500ms delay', function() {
    var elm = compileFunction(html, $scope),
    input = elm.find('input');
    input.trigger('input');
  });
});

但是,不会调用更改函数。关于如何测试这一点的任何想法都将是一个真正的帮助。

如果你想

延迟ngChange我建议另一种更容易测试的解决方案:)

  1. 在您的模板中,您有 <input ng-change="codeChanged()">
  2. 在控制器中添加

    变量超时; $scope.codeChanged = function(){ if(timeout){ $timeout.取消(超时); }

            timeout = $timeout(function(){
                $http({
                    method: "GET",
               ...
                }).success(function(data){
                  ...});
            }, 500);
        };