2.2 KiB
Стенд интеграционных тестов
PocketBase-реализации репозиториев и сервисов на настоящем PocketBase, внутри Angular-окружения (TestBed). Общие правила и устройство тестового PocketBase — в testing.md.
pnpm test:integration = ng run pchelpcrm:test-integration: отдельная цель builder'а @angular/build:unit-test в angular.json.
include: ["**/*.integration.spec.ts"]в целиtest-integration; у целиtest(pnpm test) —excludeтех же файлов, поэтому unit-тесты не требуют PocketBase.watch: falseв цели: прогон завершается сам; слежение за файлами — разовоpnpm test:integration --watch.runnerConfig: "vitest.integration.config.mts"добавляетglobalSetup: tests/support/global-setup.ts— тот же файл, что у API-тестов, он вызываетstartPocketBase(). Список файлов в этом конфиге не задаётся: builder его игнорирует.- В тестах работают
TestBedиinject()Angular, URL —inject('pbUrl')изvitest, хелперы импортируются изtests/support/clients.ts.
Почему цель builder'а, а не отдельный vitest.integration.config.ts с плагином: спеки собираются тем же компилятором Angular и с той же инициализацией TestBed, что и в pnpm test, без своего плагина компиляции и его настройки.
tests/support/clients.ts компилируется в двух программах — tsconfig.tests.json и tsconfig.spec.json. Типы Node подключены в обеих (спеки выполняются Vitest в Node, а код в src/ вроде серверного провайдера PB_URL читает process.env), а tests/support/provided-context.d.ts с типами inject('pbUrl') перечислен в include обоих tsconfig: references в tsconfig.json программы не объединяют.