Использование теста CLI ng для одновременного запуска обоих
Мотивация
Я немного не решался записать это из-за его тривиальности, но, поскольку мне пришлось немного покопаться, чтобы разобраться, вот оно. Пусть это послужит кому-нибудь или даже моему будущему «я».
Согласно нашим текущим требованиям клиента, у нас есть несколько модулей, которые являются общими для разных приложений, находящихся внутри монорепозитория. Приложения в основном представляют собой собственную загрузку, в которую мы вставляем другие модули. Эти модули находятся в каталоге modules/
на том же уровне, что и папка src.
Как работает Angular CLI, при запуске ng test
в каталоге приложения Karma запускает все тестовые файлы, заканчивающиеся на spec.ts
, которые находятся внутри каталога src. Чего я хотел добиться, так это запускать файлы спецификаций внутри папки модулей с помощью той же команды.
Выполнение
Давайте начнем с просмотра конфигурации ng test
внутри файла angular.json
:
Здесь важны биты "main": "src/test.ts"
и "tsConfig": "src/tsconfig.spec.json"
, где инициализируется среда тестирования и указываются файлы, которые должны быть скомпилированы компилятором машинописного текста (и его параметры), соответственно.
Если мы посмотрим на файл test.ts
, то увидим, как инициализируется тестовая среда и как с помощью Webpack require.context()
загружаются тестовые файлы. Можно загрузить дополнительные файлы, в данном случае контекст наших модулей, выполнив те же действия, добавив эти две строки в конец файла:
Наконец, последний шаг — указать наши файлы спецификаций для компилятора машинописного текста внутри tsconfig.spec.json
:
Запуск ng test
после этих небольших изменений запустит тесты изнутри src (как обычно), а также тесты внутри папки модулей.
Это все на сегодня. Спасибо за чтение и не стесняйтесь связаться со мной на Twitter.