У меня есть компонент ввода, который содержит как форму входа, так и форму регистрации (каждый из них является собственным компонентом).Компонент entry содержит переменную, указывающую, показывать ли компонент входа или регистрации, и это переключается с использованием элемента в шаблоне.
Когда эта переменная переключается, контейнер, который оборачивает дочерние компоненты, анимируется при его изменении.from login => register (или наоборот).
Когда я щелкаю этот элемент, чтобы переключиться на форму регистра в модульном тесте, тест не проходит, так как мне нужно вызвать fixture.detectChanges()
после нажатия на переключательДля того, чтобы затем взаимодействовать с экземпляром формы регистра.Этот вызов fixture.detectChanges()
приводит к следующей ошибке.
Error: Unable to process animations due to the following failed trigger transitions @entryModeTransition has failed due to:
- `query("app-login-form > form")` returned zero elements. (Use `query("app-login-form > form", { optional: true })` if you wish to allow this.)
Существует также вызов fixture.detectChanges()
в блоке beforeEach ().
Я удостоверился, что включил NoopAnimationsModule
в тестовую настройку, однако это, похоже, не препятствует запуску анимации (что, как я думал, NoopAnimationsModule
подойдет).
Я мог бы просто добавить опцию { optional: true }
к вызовам query()
в определении анимации, однако мне не нравится идея добавлять это в анимации, когда они присутствуют только для предотвращения неудачи тестов.
Если это уместно, компоненты формы входа в систему и регистрации смоделированы с использованием ng-mocks
.
Можно ли как-то предотвратить анимацию, запущенную в модульных тестах?