Как покрыть $ element готов в AngularJS модульном тесте? - PullRequest
0 голосов
/ 21 апреля 2020

Я не могу пройти, чтобы покрыть этот кусок кода.

export default function attrFunction($timeout, $parse) {
    'ngInject';

    return {
        restrict: 'A',
        link: function($scope, $element, $attrs) {
        $timeout(function() {
           $element.ready(function() {
             $scope.$apply(function() {
                 var func = $parse($attrs.attrFunction);
                 func($scope);
             });
          });
       });
     }
};

Я получаю успех, но он покрывает до $ timeout (function () '

Мой модульный тест:

fdescribe('Directive,', function() {
    beforeEach(
        angular.mock.inject(function(_$rootScope_, _$compile_, _$timeout_) {
            this.$rootScope = _$rootScope_;
            this.$scope = this.$rootScope.$new();
            this.$compile = _$compile_;
            this.$timeout = _$timeout_;
            this.$scope.element = {};
            this.compiledElement = this.$compile('<input type="text" ng-model="someNumber" attr-function="function"/>')(this.$scope);

            this.$scope.$apply();
        }));

    it('should add the attribute with function', function() {
        expect(this.compiledElement.attr('attr-function')).toEqual('function');
    });
});

Я ожидаю от кода добавления атрибута attr-function в поле ввода с функцией для запуска. Как я также могу покрыть остальную часть моего кода?

...