environment
- 类型:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - 默认值:
'node' - 命令行终端:
--environment=<env>
测试时将使用的运行环境。Vitest 中的默认测试环境是一个 Node.js 环境。 如果你正在构建 Web 端应用,可选用 jsdom 或 happy-dom 这种类似浏览器(browser-like)的环境来替代 Node.js。 如果你正在构建边缘计算函数,可选用 edge-runtime 环境。
TIP
你还可以使用 浏览器模式 在浏览器中运行集成或单元测试,而无需模拟环境。
要为环境配置自定义选项,请使用 environmentOptions。
通过在文件顶部添加 @vitest-environment 文档注释或普通注释,你可以为该文件中的所有测试指定其他运行环境:
文档注释:
/**
* @vitest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div')
expect(element).not.toBeNull()
})普通注释:
// @vitest-environment happy-dom
test('use happy-dom in this test file', () => {
const element = document.createElement('div')
expect(element).not.toBeNull()
})为了与 Jest 兼容,还存在一个 @jest-environment:
/**
* @jest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div')
expect(element).not.toBeNull()
})你还可以定义自定义环境。使用非内置环境时,Vitest 会根据你提供的内容加载对应的文件或包:如果是文件路径则加载文件,如果是包名则加载 vitest-environment-${name} 的包
该包应导出一个具有 Environment 属性的对象:
import type { Environment } from 'vitest'
export default <Environment>{
name: 'custom',
viteEnvironment: 'ssr',
setup() {
// 自定义初始化
return {
teardown() {
// 在所有使用此环境的测试运行完毕后调用
}
}
}
}TIP
viteEnvironment 字段对应于 Vite 环境 API。默认情况下,Vite 公开 client(用于浏览器)和 ssr(用于服务器)环境。
为了直接扩展使用Vitest 还从 vitest/environments 包导出 builtinEnvironments。关于扩展测试环境的更多信息,请参阅 测试环境。
TIP
jsdom 测试环境会暴露一个等同于当前 JSDOM 实例的全局变量 jsdom。如果你想让 TypeScript 识别它,在使用此环境时可将 vitest/jsdom 添加到你的 tsconfig.json 中:
{
"compilerOptions": {
"types": ["vitest/jsdom"]
}
}