Цель
Я хочу протестировать компонент, который обрабатывает редактор и его ввод.Этот компонент имеет 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 === ''