Как сохранить тесты вне исходного каталога в проектах Vite?

Бег npm init vue@latestсо следующей настройкой

создает файл спецификаций Vitest внутри srcкаталог. Мне интересно, почему тесты Cypress e2e имеют отдельный каталог, а модульные тесты Vitest находятся рядом с исходным кодом. Есть ли причины?

Я хочу переместить эти тесты в корневой каталог (равный cypress), создал vitestкаталог и переместил в него спецификацию.

Сам тест проходит, но я думаю, что мне нужно изменить конфигурацию sopme, чтобы исключить тесты из сборки и т. д.

Внутри файла tsconfig.app.jsonя изменил строку "exclude": ["src/**/__tests__/*"],к "exclude": ["vitest"],.

Есть ли что-то еще, что я должен сделать? Или есть какие-то причины хранить тесты Vitest внутри исходного каталога?

2 ответа

Чтобы получить тестовую папку вне исходной папки:

  1. создать папку vitest в корневом каталоге
  2. шаг ./src/components/__tests__к ./vitest/__tests__
  3. В тестовом файле * .spec вы будете импортировать компоненты с псевдонимом @
  • import HelloWorld from '@/components/HelloWorld.vue'
  1. в tsconfig.app.json
  • сдача "exclude": ["src/**/__tests__/*"],к "exclude": ["vitest/**/__tests__/*"],
  1. бежать 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 .",

Другие вопросы по тегам