Как выполнить модульное тестирование привязок в компонентном контроллере AngularJS - PullRequest
0 голосов
/ 15 января 2020

Я обновлял старое приложение AngularJS с 1.7.3 до 1.7.9 Все модульные тесты, кроме этого, проходят.

Привязки в модульном тесте не добавляются в контроллер, поэтому при вызове getOptions в массив добавляется неправильная опция, поэтому модульный тест завершается неудачей.

angular
  .module('app')
  .component('myComponent', {
    controller: MyComponentController,
    controllerAs: 'myComponentController',
    bindings: {
      userInfo: '<'
    }
  });

/** @ngInject */
function MyComponentController() {
  var vm = this;
  vm.options = getOptions();

  function getOptions() {
    var options = [{label: 'language.option1', value: 'option1'}];
    if (vm.userInfo && vm.userInfo.secondOption === 'option3') {
      options.push({label: 'language.option3', value: 'option3'});
    } else {
      options.push({label: 'language.option2', value: 'option2'});
    }

    return options;
  }
}

describe('unit tests for account paydex trend component', function () {
  var $componentController;

  beforeEach(module('app'));
  beforeEach(inject(function (_$componentController_) {
    $componentController = _$componentController_;
  }));

  it('should set month view to 3-8 or 3-12 months based on supplier country', function () {
    var bindings = {
      userInfo: {
        secondOption : 'option3'
      }
    };
    var component = $componentController('myComponent', null, bindings);
    expect(component.menuOptionsArray).toEqual([{label: 'language.option1', value: 'option1'}, {label: 'language.option3', value: 'option3'}]);
  });
});

Это тестируется с использованием jasmine 3.5.0 и karma 4.4.1, перед обновлением использовались jasmine 3.1.0 и karma 2.0.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...