Skip to content

includeSource

  • 类型: string[]
  • 默认值: []

一个匹配你的 源内测试文件glob 模式 列表。这些模式是相对于 root 解析的(默认为 process.cwd())。

定义后,Vitest 将运行所有内部包含 import.meta.vitest 的匹配文件。

WARNING

Vitest 对源文件执行简单的基于文本的包含检查。如果文件包含 import.meta.vitest,即使在注释中,它也会被匹配为源内测试文件。

Vitest 使用 tinyglobby 包来解析 glob 模式。

示例

js
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
})

然后你可以在源文件内部编写测试:

src/index.ts
ts
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0)
}

// #region 源内测试套件
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest
  it('add', () => {
    expect(add()).toBe(0)
    expect(add(1)).toBe(1)
    expect(add(1, 2, 3)).toBe(6)
  })
}
// #endregion

对于生产构建,你需要将 import.meta.vitest 替换为 undefined,让打包器执行死代码消除。

js
import { defineConfig } from 'vite'

export default defineConfig({
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})
js
import { defineConfig } from 'rolldown/config'

export default defineConfig({
  transform: {
    define: { 
      'import.meta.vitest': 'undefined', 
    }, 
  },
})
js
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // 其他选项
}
js
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // 其他选项
})
js
const webpack = require('webpack')

module.exports = {
  plugins: [
    new webpack.DefinePlugin({ 
      'import.meta.vitest': 'undefined', 
    })
  ],
}

TIP

要获得 import.meta.vitest 的 TypeScript 支持,请将 vitest/importMeta 添加到你的 tsconfig.json 中:

tsconfig.json
json
{
  "compilerOptions": {
    "types": ["vitest/importMeta"]
  }
}