Я пытаюсь написать единичный тест, который проверяет, происходит ли эффект события фокусировки. Мой фактический тест является более сложным, но я создал минимальное воспроизведение с помощью следующего кода:Угловой 2 + Жасмин: фокус браузера при тестировании фокуса
it('testing input focus', async(() => {
let showDiv = false;
const template = `<div *ngIf="shouldShow" class='hidden-div'>
SHOW ME WHAT YOU GOT
</div>
<input (focus)="shouldShow = !shouldShow" name="input">`;
buildTestComponent(template, {shouldShow: showDiv}).then((fixture) => {
fixture.detectChanges();
const inputEl: HTMLInputElement = fixture.nativeElement.querySelector('input');
expect(fixture.nativeElement.querySelector('.hidden-div')).toBe(null);
inputEl.focus();
fixture.detectChanges();
expect(fixture.nativeElement.querySelector('.hidden-div')).not.toBe(null);
});
}));
Когда я запускаю этот тест с кармой тест проходит до тех пор, как у меня есть фокус на вкладке хрома, который работает цель кармы. Однако, если браузер не имеет фокус тест не пройден (даже если браузер виден, но я нажимаю на другое окно) с сообщением об ошибке:
Expected null not to be null.
Я полагаю, что, когда вкладка Chrome не имеет фокуса , вызов inputEl.focus() фактически не вызван, но я не знаю, как его исправить. Все остальные модульные тесты, которые я написал, проходят независимо от фокуса браузера. Кто-нибудь сталкивался с этим или имел какие-то идеи?
Идти в этот же номер сегодня. Не уверен, что это самый элегантный подход к его фиксации. – DevVersion