Skip to content
Vitest 3
Main Navigation 指南 & API配置浏览器模式高级 API
3.2.0
2.1.9
1.6.1
0.34.6

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

主题

Sidebar Navigation

API

Node API

高级 API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

插件 API

Runner API

报告器 API

任务元数据

指南

运行测试

扩展报告器

自定义测试池

配置 Vitest

测试 API 参考

页面导航

TestCase ​

TestCase 类代表一个独立的测试。该类仅在主线程中可用。如果你正在处理运行时任务,请参考 "Runner API"。

TestCase 实例始终具有一个 type 属性,其值为 test。你可以使用它来区分不同的任务类型:

ts
if (task.type === 'test') {
  task; // TestCase
}

project ​

这指的是测试所属的 TestProject 实例。

module ​

这是对定义测试的 TestModule 的直接引用。

name ​

这是传递给 test 函数的测试名称。

ts
import { test } from 'vitest';

// [!code word:'the validation works correctly']
test('the validation works correctly', () => {
  // ...
});

fullName ​

测试的完整名称,包括所有父套件,用 > 符号分隔。例如,此测试的完整名称为 "the validation logic > the validation works correctly":

ts
import { describe, test } from 'vitest';

// [!code word:'the validation works correctly']
// [!code word:'the validation logic']
describe('the validation logic', () => {
  test('the validation works correctly', () => {
    // ...
  });
});

id ​

这是测试的唯一标识符。此 ID 是确定性的,对于同一个测试在多次运行中将保持不变。ID 基于 项目 名称、模块 ID 和测试顺序生成。

ID 的格式如下:

1223128da3_0_0
^^^^^^^^^^ 文件哈希值
           ^ 套件索引
             ^ 测试索引

TIP

你可以使用 vitest/node 中的 generateFileHash 函数生成文件哈希,该函数自 Vitest 3 起可用。

ts
import { generateFileHash } from 'vitest/node';

const hash = generateFileHash(
  '/file/path.js', // 相对路径
  undefined // 项目名称,如果未设置则为 `undefined`。
);

DANGER

请勿尝试解析此 ID。它可能在开头包含一个负号,例如:-1223128da3_0_0_0。

location ​

测试在模块中定义的位置。仅当在配置中启用了 includeTaskLocation 时,才会收集位置信息。请注意,如果使用了 --reporter=html、--ui 或 --browser 标志,此选项会自动启用。

此测试的位置将等于 { line: 3, column: 1 }:

ts
import { test } from 'vitest'

test('the validation works correctly', () => {
  // ...
})
1
2
3
4
5

parent ​

父 套件。如果测试直接在 模块 内部调用,则其父级将是模块本身。

options ​

ts
interface TaskOptions {
  readonly each: boolean | undefined;
  readonly fails: boolean | undefined;
  readonly concurrent: boolean | undefined;
  readonly shuffle: boolean | undefined;
  readonly retry: number | undefined;
  readonly repeats: number | undefined;
  readonly mode: 'run' | 'only' | 'skip' | 'todo';
}

用于收集测试的选项。

ok ​

ts
function ok(): boolean;

检查测试是否未导致套件失败。如果测试尚未完成或已被跳过,则返回 true。

meta ​

ts
function meta(): TaskMeta;

测试执行期间附加到测试的自定义元数据。元数据可以通过在测试运行期间将属性分配给 ctx.task.meta 对象来附加。

ts
import { test } from 'vitest';

test('the validation works correctly', ({ task }) => {
  // ...

  task.meta.decorated = false;
});

如果测试尚未完成运行,元数据将是一个空对象。

result ​

ts
function result(): TestResult;

测试结果。若测试未完成或刚被收集,则其将等于 TestResultPending:

ts
export interface TestResultPending {
  /**
   * 测试已被收集但尚未完成运行。
   */
  readonly state: 'pending';
  /**
   * 待处理测试没有错误。
   */
  readonly errors: undefined;
}

如果测试被跳过,则返回值将是 TestResultSkipped:

ts
interface TestResultSkipped {
  /**
   * 测试被 `skip` 或 `todo` 标记跳过。
   * 可通过 `options.mode` 选项查看使用了哪个标记。
   */
  readonly state: 'skipped';
  /**
   * 跳过的测试无错误。
   */
  readonly errors: undefined;
  /**
   * 传递给 `ctx.skip(note)` 的自定义注释。
   */
  readonly note: string | undefined;
}

TIP

若因其他测试带有 only 标记而被跳过,options.mode 将等于 skip。

如果测试失败,则返回值将是 TestResultFailed:

ts
interface TestResultFailed {
  /**
   * 测试执行失败。
   */
  readonly state: 'failed';
  /**
   * 测试执行期间抛出的错误。
   */
  readonly errors: ReadonlyArray<TestError>;
}

如果测试通过,则返回值将是 TestResultPassed:

ts
interface TestResultPassed {
  /**
   * 测试成功通过。
   */
  readonly state: 'passed';
  /**
   * 测试执行期间抛出的错误。
   */
  readonly errors: ReadonlyArray<TestError> | undefined;
}

WARNING

注意:状态为 passed 的测试仍可能包含错误——当至少触发一次 retry 时可能出现这种情况。

diagnostic ​

ts
function diagnostic(): TestDiagnostic | undefined;

测试的相关信息,例如持续时间、内存使用等:

ts
interface TestDiagnostic {
  /**
   * 若测试持续时间超过 `slowTestThreshold`。
   */
  readonly slow: boolean;
  /**
   * 测试占用的内存量(字节)。
   * 该值仅在测试以 `logHeapUsage` 标记执行时可用。
   */
  readonly heap: number | undefined;
  /**
   * 测试执行耗时(毫秒)。
   */
  readonly duration: number;
  /**
   * 测试开始时间(毫秒)。
   */
  readonly startTime: number;
  /**
   * 测试重试次数。
   */
  readonly retryCount: number;
  /**
   * 按 `repeats` 选项配置的测试重复次数。
   * 若测试在重复期间失败且未配置 `retry`,该值可能更小。
   */
  readonly repeatCount: number;
  /**
   * 若测试在第二次重试时通过。
   */
  readonly flaky: boolean;
}

INFO

若测试尚未安排运行,diagnostic() 将返回 undefined。

Pager
上一页TestSpecification
下一页TestSuite

基于 MIT 许可证 发布。

版权所有 (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/test-case

基于 MIT 许可证 发布。

版权所有 (c) 2021-Present Vitest Team