Реактивные формы: почему 2-стороннее ожидание работает по-другому под Жасмином/Кармой?

#angular #jasmine #karma-jasmine #angular-reactive-forms

Вопрос:

Как правило, Karma отображает результаты тестирования, а также последний протестированный компонент, который вы протестировали.

Этот компонент работает почти так же полно, как живой, но я заметил, что он не соответствует 100%.

Я создал простое тестовое приложение, в котором есть форма для ввода текста: https://stackblitz.com/edit/stackoverflow-q-53122846-szzgrz?file=main.ts

Если вы раскомментируете «bootstrapApp» в файле main.ts, вы увидите, что работает двусторонняя привязка: текст, введенный в поле, автоматически отображается под ним.

Но если вы раскомментируете «Тесты начальной загрузки» (возможно, вам потребуется перезагрузить страницу, чтобы увидеть разницу), вы увидите, что тест не удался (содержимое внутри промежутка не изменилось).

Почему?

Ответ №1:

Черт возьми, я заставил это сработать.

Я думаю, что 2 штуки были пропущены:

Во-первых, я неправильно настраивал свойство формы. Вместо этого:

 component.registrationForm.value.playerNick = testVal;
 

но сработало вот что:

 component.registrationForm.controls['playerNick'].setValue(testVal);
 

Не знаю почему, но это имеет значение.

Во-вторых, я скучал по занятиям

 fixture.detectChanges();
 

после изменения содержимого формы и перед проверкой обновлений.