Как вызвать $ интервал в init при тестировании директивы - PullRequest
1 голос
/ 17 апреля 2019

Я хочу протестировать директиву, которая не отображается до тех пор, пока при инициализации не будет вызван интервал $. Как мне пройти тестирование? В настоящее время я пытаюсь вызвать интервал во время теста, но он, похоже, ничего не делает. Это то, что у меня сейчас есть.

Директива:

export class IdleDisconnectWarningController {

static $inject = ["$scope", "$interval"];

private TAG = "IdleDisconnectWarningController";
public timeToDisconnect;

constructor(private $scope: IIdleDisconnectWarningScope,
            private $interval: IIntervalService
) {
  this.$interval(() => this.updateCountdown(), 1000);
}

  private updateCountdown(){
    console.log("UPDATED");
    var time = Math.floor((this.$scope.disconnectTimeInMilliSecs - Date.now())/1000);
    this.timeToDisconnect = time.toString();
  }

}

Тест

  beforeEach(inject(function($rootScope, _$interval_, _$compile_ ){
      elem = angular.element('<idle-disconnect-warning disconnect-time-in-milli-secs=300></idle-disconnect-warning>');
      scope = $rootScope.$new();
      $interval = _$interval_;
      $compile = _$compile_;
      elem = $compile(elem)(scope);
      scope.$digest();
      console.log(elem.html())
  }));

  it('has valid content ', function() {
    // Check that the compiled element contains the templated content
    $interval.flush(100);
    scope.$apply();
    console.log(elem.text());
    expect(elem).not.toBeNull();
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...