Работа с временем и макетами ч... Заметка
RSS Angular Blog - Medium

Работа с временем и макетами часов в тестах

Имитационные часы полезны при тестировании программного обеспечения для подделки дат, ускорения длительных операций и предотвращения утечек таймеров между тестами. Они также помогают выполнить все ожидающие таймеры для стабилизации тестовых сред. Однако традиционные имитационные часы могут создавать сложность и антипаттерны, особенно с современными асинхронными возможностями JavaScript. Принудительное синхронное тестирование асинхронной логики может привести к нереалистичным порядкам выполнения и скрыть ошибки, связанные со временем. Тесты часто загромождаются произвольными жестко закодированными продвижениями таймера, что делает их хрупкими. Некоторые тестовые утилиты также могут мешать предполагаемому времени имитационных часов. Для решения этих проблем исследуется концепция "автоматически продвигающихся" имитационных часов. Цель состоит в том, чтобы имитационные часы реалистично продвигали время, упрощая тесты и делая их более предсказуемыми. Эта функция призвана позволить тестам работать с имитационными часами без необходимости значительных изменений в существующем коде. Примеры демонстрируют, как автоматически продвигающиеся имитационные часы беспрепятственно обрабатывают асинхронные функции и ожидание условий. Авторы тестовых фреймворков привлекаются для поддержки этой функциональности. Такие библиотеки, как Jasmine и @sinonjs/fake-timers, уже включают возможности автоматического продвижения. Это усовершенствование обещает более быстрые и предсказуемые асинхронные тесты в различных веб-фреймворках.
CdXz5zHNQW_D2PfQNkESJ.png