Использование теста 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.