Я хочу протестировать директиву, которая не отображается до тех пор, пока при инициализации не будет вызван интервал $. Как мне пройти тестирование? В настоящее время я пытаюсь вызвать интервал во время теста, но он, похоже, ничего не делает. Это то, что у меня сейчас есть.
Директива:
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();
});