Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- 感谢你的贡献! -->

### 在提交PR之前,请确保您执行以下操作:
- [ ] 曾阅读过[翻译须知](https://github.com/vitest-dev/docs-cn/issues/391)。
- [ ] 曾阅读过 [翻译须知](https://github.com/vitest-dev/docs-cn/issues/391)。
- [ ] 检查是否已经有PR以同样的方式解决问题,以避免创建重复。
- [ ] 在此PR中描述正在解决的问题,或引用它解决的问题(例如:`fixes #123`)。

Expand Down
2 changes: 1 addition & 1 deletion .vitepress/scripts/cli-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ const template = options.map((option) => {
const cli = option.cli
const [page, ...hash] = (title.startsWith('browser.') ? title.slice(8) : title).toLowerCase().split('.')
const config = skipConfig.has(title) ? '' : `[${title}](${title.includes('browser.') ? '/config/browser/' : '/config/'}${page}${hash.length ? `#${[page, ...hash].join('-')}` : ''})`
// eslint-disable-next-line e18e/prefer-static-regex

return `### ${title}\n\n- **CLI:** ${cli}\n${config ? `- **Config:** ${config}\n` : ''}\n${option.description.replace(/https:\/\/vitest\.dev\//g, '/')}\n`
}).join('\n')

Expand Down
2 changes: 1 addition & 1 deletion advanced/pool.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 自定义运行池
# 自定义运行池 <Badge type="danger">advanced</Badge> {#custom-pool}

::: warning
这是一个高级且非常底层的 API。如果你只是想 [运行测试](/guide/),你可能不需要这个。它主要由库作者使用。
Expand Down
4 changes: 2 additions & 2 deletions api/advanced/metadata.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 任务元数据 <Badge type="danger">高级</Badge>
# 任务元数据 <Badge type="danger">高级</Badge> {#task-metadata}

如果你正在开发自定义报告器或使用 Vitest Node.js API,你可能会发现将在各种上下文中执行的测试中的数据传递给报告器或自定义 Vitest 处理程序很有用。

Expand Down Expand Up @@ -42,7 +42,7 @@ Vitest 使用不同的方法与 Node.js 进程进行通信。

该属性也会出现在每个测试的 `json` 报告中,因此请确保数据可以序列化为 JSON。

另外,请确保在设置[错误属性](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#error_types)之前序列化它们。
另外,请确保在设置 [错误属性](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#error_types) 之前序列化它们。
:::

当测试运行完成时,你还可以从 Vitest 状态获取此信息:
Expand Down
6 changes: 3 additions & 3 deletions api/advanced/plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function plugin(): Plugin {
:::

::: tip TypeScript
Vitest 通过 `Vite` namespace 重新导出所有仅 Vite 类型的导入,我们可以使用它来保持版本同步。但是,如果我们正在为 Vite 和 Vitest 编写插件,则可以继续使用 `vite` 入口点的 `Plugin` 类型。只需确保我们在某处引用了 `vitest/config` ,以便正确增强 `configureVitest` 即可:
Vitest 通过 `Vite` namespace 重新导出所有仅 Vite 类型的导入,我们可以使用它来保持版本同步。但是,如果我们正在为 Vite 和 Vitest 编写插件,则可以继续使用 `vite` 入口点的 `Plugin` 类型。只需确保我们在某处引用了 `vitest/config`,以便正确增强 `configureVitest` 即可:

```ts
/// <reference types="vitest/config" />
Expand All @@ -59,7 +59,7 @@ Vitest 通过 `Vite` namespace 重新导出所有仅 Vite 类型的导入,我

### project

该插件所属的当前[测试项目](./test-project)。
该插件所属的当前 [测试项目](./test-project)。

::: warning 浏览器模式
请注意,如果我们依赖浏览器功能,则 `project.browser` 字段尚未设置。请改用 [`reporter.onBrowserInit`](./reporters#onbrowserinit) 事件。
Expand All @@ -75,7 +75,7 @@ vitest.config.reporters.push([['my-reporter', {}]])
```

::: warning 配置已解析完成
请注意,Vitest 已经解析了配置,因此某些类型可能与通常的用户配置不同。这也意味着某些属性将不会再次解析,例如 `setupFile` 。如果我们要添加新文件,请确保先解析它。
请注意,Vitest 已经解析了配置,因此某些类型可能与通常的用户配置不同。这也意味着某些属性将不会再次解析,例如 `setupFile`。如果我们要添加新文件,请确保先解析它。

此时尚未创建记者,因此修改 `vitest.reporters` 将不起作用,因为它将被覆盖。如果我们需要注入自己的记者,请修改配置。
:::
Expand Down
4 changes: 2 additions & 2 deletions api/advanced/runner.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 运行器 API <Badge type="danger">advanced</Badge>
# 运行器 API <Badge type="danger">advanced</Badge> {#runner-api}

::: warning 注意
这是高级 API。如果你只需要 [运行测试](/guide/),你可能不需要这个。它主要被库的作者使用。
Expand Down Expand Up @@ -229,7 +229,7 @@ interface Test<ExtraContext = object> extends TaskBase {
}
```

每个任务都可以有一个 `result` 字段。只有当在套件回调或 `beforeAll`/`afterAll` 回调中抛出错误,阻止了测试的收集时,套件才会有这个字段。测试在它们的回调被调用后总是有这个字段——`state` 和 `errors` 字段根据结果的存在与否而存在。如果在 `beforeEach` 或 `afterEach` 回调中抛出了错误,抛出的错误将出现在 `task.result.errors` 中。
每个任务都可以有一个 `result` 字段。只有当在套件回调或 `beforeAll`/`afterAll` 回调中抛出错误,阻止了测试的收集时,套件才会有这个字段。测试在它们的回调被调用后总是有这个字段—— `state` 和 `errors` 字段根据结果的存在与否而存在。如果在 `beforeEach` 或 `afterEach` 回调中抛出了错误,抛出的错误将出现在 `task.result.errors` 中。

```ts
export interface TaskResult {
Expand Down
2 changes: 1 addition & 1 deletion api/advanced/test-case.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ test('the validation works correctly', { meta: { decorated: true } })
function result(): TestResult
```

测试结果。如果测试尚未完成或刚刚开始收集,等于 `TestResultPending`
测试结果。如果测试尚未完成或刚刚开始收集,等于 `TestResultPending`:

```ts
export interface TestResultPending {
Expand Down
2 changes: 1 addition & 1 deletion api/advanced/test-module.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ describe('the validation works correctly', (task) => {
```

:::tip
如果元数据是在收集过程中附加的(在 `test` 函数之外),那么它将在自定义报告器中的['onTestModuleCollectd'](./reporters#onTestModuleCollected) 挂钩中可用。
如果元数据是在收集过程中附加的(在 `test` 函数之外),那么它将在自定义报告器中的 ['onTestModuleCollectd'](./reporters#onTestModuleCollected) 挂钩中可用。
:::

## diagnostic
Expand Down
14 changes: 7 additions & 7 deletions api/advanced/vitest.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ const testCase = vitest.state.getReportedEntity(task) // 新 API

## projects

这是一个数组,里面包含了所有 [测试项目](/api/advanced/test-project) ,这些项目是用户自己定义的。如果用户没有显式指定任何项目,那么这个数组中只会包含一个 [根项目](#getrootproject)
这是一个数组,里面包含了所有 [测试项目](/api/advanced/test-project),这些项目是用户自己定义的。如果用户没有显式指定任何项目,那么这个数组中只会包含一个 [根项目](#getrootproject)。

Vitest 会保证这个数组里至少有一个项目可用。如果用户在命令行里通过 --project 参数指定了不存在的项目名称,Vitest 会在创建这个数组前就报错。

Expand Down Expand Up @@ -149,7 +149,7 @@ function getProvidedContext(): ProvidedContext
function getProjectByName(name: string): TestProject
```

此方法通过名称返回项目。类似于调用 `vitest.projects.find`
此方法通过名称返回项目。类似于调用 `vitest.projects.find`。

::: warning
如果项目不存在,此方法将返回根项目 - 请确保再次检查返回的项目是否是我们要找的项目。
Expand Down Expand Up @@ -532,7 +532,7 @@ Vitest 可以根据 `pool` 或 `locations` 选项为同一文件创建不同的
function matchesProjectFilter(name: string): boolean
```

检查名称是否与当前 [项目过滤器](/guide/cli#project) 匹配。如果没有项目过滤器,则始终返回 `true`
检查名称是否与当前 [项目过滤器](/guide/cli#project) 匹配。如果没有项目过滤器,则始终返回 `true`。

无法通过编程方式更改 `--project` CLI 选项。

Expand Down Expand Up @@ -590,7 +590,7 @@ function experimental_parseSpecification(
): Promise<TestModule>
```

该函数会收集文件内的所有测试,但不会执行它们。它借助 Vite 的 `ssrTransform` ,并在其之上使用 rollup 的 `parseAst` 进行静态分析,从而提取所有可识别的测试用例。
该函数会收集文件内的所有测试,但不会执行它们。它借助 Vite 的 `ssrTransform`,并在其之上使用 rollup 的 `parseAst` 进行静态分析,从而提取所有可识别的测试用例。

::: warning
如果 Vitest 无法解析测试的名称,它将在测试或套件中注入一个 `dynamic: true` 属性。`id` 也会带有 `-dynamic` 后缀,以避免破坏已正确收集的测试。
Expand All @@ -599,9 +599,9 @@ Vitest 总是在带有 `for` 或 `each` 修饰符的测试,或者名称是动

Vitest 无法做到让动态测试可以被过滤,但你可以使用 `escapeTestName` 函数将带有 `for` 或 `each` 修饰符的测试转换为名称模式:

若 Vitest 无法解析测试名称,它会在测试或套件中注入一个隐藏的 `dynamic: true` 属性,并在 `id` 后追加 `-dynamic` ,以免破坏已正确收集的测试。
若 Vitest 无法解析测试名称,它会在测试或套件中注入一个隐藏的 `dynamic: true` 属性,并在 `id` 后追加 `-dynamic`,以免破坏已正确收集的测试。

含 `for` 或 `each` 修饰符的测试,以及名称动态生成的测试(如 `hello ${property}` 或 `'hello' + ${property}` ) , Vitest 一律会注入此属性。 Vitest 仍会为其分配名称,但该名称无法用于过滤测试。
含 `for` 或 `each` 修饰符的测试,以及名称动态生成的测试(如 `hello ${property}` 或 `'hello' + ${property}`) , Vitest 一律会注入此属性。 Vitest 仍会为其分配名称,但该名称无法用于过滤测试。

Vitest 无法让动态测试支持过滤,但你可以使用 `escapeTestName` 函数,将带 `for` 或 `each` 的测试转换成名称模式:

Expand All @@ -616,7 +616,7 @@ const escapedPattern = new RegExp(escapeTestName('hello, %s', true))
::: warning
Vitest 只会收集当前文件内定义的测试,绝不会跟随导入去其他文件搜寻。

无论是否从 `vitest` 入口点导入, Vitest 都会收集所有 `it` 、`test` 、`suite` 和 `describe` 的定义。
无论是否从 `vitest` 入口点导入, Vitest 都会收集所有 `it`、`test`、`suite` 和 `describe` 的定义。
:::

## experimental_parseSpecifications <Version type="experimental">4.0.0</Version> <Experimental /> {#parsespecifications}
Expand Down
Loading
Loading