AngularJS模拟ngChange用于单元测试中的选择

时间:2019-03-11 20:21:42

标签: angularjs karma-jasmine

我想为选择框输入一个onchange事件。

HTML-

<select id="basetype" ng-model="role.baseType"
        ng-options="basePolicy"
        ng-change="populateSettingsForBaseType()">
</select>

控制器事件处理程序-

private addBaseTypeChangeHandler(): void {
    this.$scope.populateSettingsForBaseType = () => {
      //someCode
    };
}

我想验证事件处理程序是否称为onchange事件-

it('should add the certificate validator', function() {
      spyOn($scope, 'populateSettingsForBaseType').and.callThrough();
      const html = '<select id="basetype" ng-change="populateSettingsForBaseType()" ng-model="model"></select>';

      const element = $compile(html)($scope);

      const elem = element.find('select').trigger('change');

      const ngModel = element.controller('ngModel');
      ngModel.$viewValue = 'full';

      $scope.$digest();
      expect($scope.populateSettingsForBaseType).toHaveBeenCalled();
    });

这不起作用。什么是触发事件并确保从UT调用处理程序的正确方法。

0 个答案:

没有答案