Как запустить тест карма-жасмин, который запускает focus () - метод HTMLElement в фоновом режиме? - PullRequest
0 голосов
/ 17 апреля 2019

Цель

Я хочу протестировать компонент, который обрабатывает редактор и его ввод.Этот компонент имеет FormControl и FocusMonitor.Определенные значения следует обновлять только в том случае, если для частного поля компонента установлено значение true.FocusMonitor обновляет личное поле компонента.

Я запускаю тест с Karma Jasmine 4.0.1.

Проблема:

Когда я выбираю (фокус)ChromeBrowser запускает тест, тест проходит успешно.Если я просто запускаю тест через вход терминала и запускаю его в фоновом режиме, работая над чем-то другим, тест завершается неудачей.

Сбой происходит потому, что Observable FocusMonitor делает not emit событие, когда я не выбираю активно окно с запущенным тестовым браузером.

Код

Внутри компонента

focusMonitor.monitor(elementRef.nativeElement, true).subscribe(origin => {
            this.focused = !!origin;
            this.someUpdateAlgorithm();
        });


//somewhere inside the component. This ward keeps off unwanted changes via the model.

if (!this.focused) {
    return;
}



Внутри компонента.spec

fit('should change value of input control', () => {
            fixture.debugElement.query(By.css('input')).nativeElement.focus();
            model.setValue(3);
            const inputText = getCurrentDisplayValue();
            expect(inputText).toBe('3');
        });

Результаты

Ожидаемые результаты:

Дело: активно выбирает окно с запущенным тестовым браузером (Chrome)

Ожидайте (inputText) .toBe ('3');// successfull inputText === '3'

Случай: запуск тест-браузера (Chrome) свернут (в фоновом режиме)

ожидаем (inputText) .toBe( '3');// successfull inputText === '3'

Фактические результаты:

Случай: активно выбирает окно с запущенным тест-браузером (Chrome)

Ожидайте (inputText) .toBe ('3');// successfull inputText === '3'

Случай: запуск тест-браузера (Chrome) свернут (в фоновом режиме)

ожидаем (inputText) .toBe( '3');// сбой inputText === ''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...