Я пытаюсь выполнить модульное тестирование положения курсора в компоненте Angular, который автоматически форматирует пользовательский ввод. Сам компонент использует обычное поле ввода HTML, а затем необходимо вставить пробелы для форматирования текста для лучшей читабельности.
Событие регистрируется, когда я прикрепляю EventHandler к элементу HTML и что-то вывожу из журнала. Но значение в поле ввода не регистрируется, а также атрибуты SelectionStart/SelectionEnd
не обновляются.
Вот мой модульный тест:
const inputElement = fixture.debugElement.query(By.css('input'));
const event = new KeyboardEvent('keydown', {
key: 'e',
code: 'KeyE',
bubbles: true
});
inputElement.nativeElement.dispatchEvent(event);
fixture.detectChanges();
expect(inputElement.nativeElement.value).toEqual('e');
Мой компонент:
@Component({
template: `
<input [formControl]="formControl" />
`
})
class InputComponent {
formControl = new FormControl();
}
Мой тестовый стенд:
let component: InputComponent;
let fixture: ComponentFixture<InputComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [InputComponent],
imports: [ReactiveFormsModule]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(InputComponent);
fixture.detectChanges();
component = fixture.componentInstance;
});