Угловой вызов setTimeout () в компоненте вызывает консольные ошибки в тесте, даже если тест проходит - PullRequest
0 голосов
/ 18 апреля 2019

Я тестирую действие щелчка в Angular 7 тега

Вот разметка тега в моем компоненте

<div id="region-start" class="timeline-region">
    <div class="row">
      <div class="col-12 col-md-4">
        <a class="timeline-region-heading" [ngClass]="{'timeline-region-active':activeStart}" [routerLink]="" (click)="showRegionAndVisit(true, 'start', 0)">Start</a>
      </div>
    </div>
</div>

Вот тест

it('should display a start date', () => {

    var startHeading = fixture.nativeElement.querySelector('#region-start a.timeline-region-heading');

    startHeading.click();  // This will display the start visit details box

    fixture.detectChanges();

    let visitDate = fixture.nativeElement.querySelector('#region-start .timeline-visit-content-desktop .visit-date');

    expect(visitDate.textContent).toContain(learnerStartDate);
});

Тест пройден, но я получаю следующую ошибку в консоли.

Доступ к XMLHttpRequest по адресу 'ng: ///DynamicTestModule/LearnerEventsActivitiesComponent.ngfactory.js' from origin 'http://localhost:9876'была заблокирована политикой CORS: Запросы между источниками поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https.

Функция, которая вызывается тегом 'showRegionAndVisit() 'вызывает setTimeout (), и когда я комментирую это, я больше не получаю сообщение об ошибке в консоли, так что это является причиной.

Есть ли способ предоставить фиктивный setTimeout для компонентов в тестах?

Приветствия

1 Ответ

1 голос
/ 18 апреля 2019

Я нашел ответ. Я добавил

jasmine.clock().install(); 

в начале моего теста это заменяет setTimeout фиктивной функцией

...