如何将测试保留在 Vite 项目的源目录之外?

13 vue.js vite vitest

npm init vue@latest使用以下设置运行

在此输入图像描述

生成一个 Vitest 规范文件src。我想知道为什么 Cypress e2e 测试有一个单独的目录,而 Vitest 单元测试就在源代码旁边。有什么原因吗?

我想将这些测试移动到根目录(等于cypress),创建一个vitest目录并将其移至 spec 中。

测试本身通过了,但我认为我必须更改 sopme 配置以从构建等中排除测试。

在文件内tsconfig.app.json我将行更改"exclude": ["src/**/__tests__/*"],"exclude": ["vitest"],.

还有什么我应该做的吗?或者是否有任何理由将 Vitest 测试保留在源目录中?

JEd*_*dot 14

要将测试文件夹获取到源文件夹之外:

  1. 在根目录下创建一个vitest文件夹
  2. ./src/components/__tests__搬去​./vitest/__tests__
  3. 在 test * .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}']
  }
Run Code Online (Sandbox Code Playgroud)

然后还调整tsconfig.app.json"exclude": ["vitest/**/*"],

的结果yarn run test:unit

在此输入图像描述