Как сохранить тесты вне исходного каталога в проектах Vite?
Бег
npm init vue@latest
со следующей настройкой
создает файл спецификаций Vitest внутри
src
каталог. Мне интересно, почему тесты Cypress e2e имеют отдельный каталог, а модульные тесты Vitest находятся рядом с исходным кодом. Есть ли причины?
Я хочу переместить эти тесты в корневой каталог (равный
cypress
), создал
vitest
каталог и переместил в него спецификацию.
Сам тест проходит, но я думаю, что мне нужно изменить конфигурацию sopme, чтобы исключить тесты из сборки и т. д.
Внутри файла
tsconfig.app.json
я изменил строку
"exclude": ["src/**/__tests__/*"],
к
"exclude": ["vitest"],
.
Есть ли что-то еще, что я должен сделать? Или есть какие-то причины хранить тесты Vitest внутри исходного каталога?
2 ответа
Чтобы получить тестовую папку вне исходной папки:
- создать папку vitest в корневом каталоге
- шаг
./src/components/__tests__
к./vitest/__tests__
- В тестовом файле * .spec вы будете импортировать компоненты с псевдонимом
@
-
import HelloWorld from '@/components/HelloWorld.vue'
- в tsconfig.app.json
- сдача
"exclude": ["src/**/__tests__/*"],
к"exclude": ["vitest/**/__tests__/*"],
- бежать
npm run build && npm run test:unit
Не могли бы вы объяснить, почему вы храните каталог тестов внутри каталога vitest?
Вы не обязаны хранить эту папку. Это соглашение, проверьте ниже
Если вы хотите поместить файл спецификации в папку с тестами без подпапки, просто добавьте в
vite.config.ts
:
test: {
include: ['./vitest/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}']
}
затем также настройте tsconfig.app.json:
"exclude": ["vitest/**/*"],
Результат
yarn run test:unit
в последнем выпуске vue 3 следуйте инструкциям @flydev и обновите файл package.json.
от "test:unit": "vitest --environment jsdom --root src/",
к
"test:unit": "vitest --environment jsdom --root .",