Я обновлял старое приложение 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