close

testEnvironment

  • 类型: 'node' | 'jsdom' | 'happy-dom' | { name: EnvironmentName, options?: EnvironmentOptions }
  • 默认值: 'node'
  • CLI: --testEnvironment=node

测试时所使用的环境。

Rstest 默认使用 Node.js 作为测试环境。如果你在开发 Web 应用,可以使用类浏览器环境,如 jsdomhappy-dom

CLI
rstest.config.ts
npx rstest --testEnvironment=jsdom

DOM 测试

Rstest 支持使用 jsdomhappy-dom 来模拟 DOM 和浏览器 API。

如果你想启用 DOM 测试,可以使用如下配置:

rstest.config.ts
import { defineConfig } from '@rstest/core';

export default defineConfig({
  testEnvironment: 'jsdom', // 或 'happy-dom'
});

你还需要安装对应的包:

使用 jsdom

npm
yarn
pnpm
bun
deno
npm add jsdom -D

使用 happy-dom

npm
yarn
pnpm
bun
deno
npm add happy-dom -D

启用 DOM 测试后,你可以在测试用例中使用 documentwindow 等浏览器 API。

test('DOM test', () => {
  document.body.innerHTML = '<p class="content">hello world</p>';
  const paragraph = document.querySelector('.content');
  expect(paragraph?.innerHTML).toBe('hello world');
});

环境选项

你也可以为测试环境传递选项。这对于配置 jsdomhappy-dom 非常有用。例如,你可以为 jsdom 设置 url

rstest.config.ts
import { defineConfig } from '@rstest/core';

export default defineConfig({
  testEnvironment: {
    name: 'jsdom',
    options: {
      // jsdom-specific options
      url: 'https://example.com',
    },
  },
});

options 对象会直接传递给环境的构造函数。

  • 对于 jsdom,它会传递给 JSDOM 构造函数。你可以在 jsdom 文档中找到可用的选项。
  • 对于 happy-dom,它会传递给 Window 构造函数。你可以在 happy-dom 文档中找到可用的选项。

示例