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 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
2 changes: 1 addition & 1 deletion api/advanced/plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Vitest 通过 `Vite` namespace 重新导出所有仅 Vite 类型的导入,我

### project

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

::: warning 浏览器模式
请注意,如果我们依赖浏览器功能,则 `project.browser` 字段尚未设置。请改用 [`reporter.onBrowserInit`](./reporters#onbrowserinit) 事件。
Expand Down
2 changes: 1 addition & 1 deletion 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
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
2 changes: 1 addition & 1 deletion 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
10 changes: 5 additions & 5 deletions api/browser/assertions.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Vitest 默认提供了一组丰富的 DOM 断言,这些断言源自 [`@testing
```
:::

浏览器中的测试由于其异步特性,可能会不一致地失败。因此,即使条件延迟(如超时、网络请求或动画),也必须有办法保证断言成功。为此,Vitest 通过 [`expect.poll`](/api/expect#poll)和 `expect.element` API 提供了可重试的断言:
浏览器中的测试由于其异步特性,可能会不一致地失败。因此,即使条件延迟(如超时、网络请求或动画),也必须有办法保证断言成功。为此,Vitest 通过 [`expect.poll`](/api/expect#poll) 和 `expect.element` API 提供了可重试的断言:

```ts
import { expect, test } from 'vitest'
Expand Down Expand Up @@ -433,7 +433,7 @@ function toHaveAccessibleErrorMessage(message?: string | RegExp): Promise<void>

这允许你断言一个元素具有预期的 [可访问错误消息](https://w3c.github.io/aria/#aria-errormessage)。

你可以传递预期的可访问错误消息的确切字符串。或者,你可以通过传递正则表达式或使用 [`expect.stringContaining`](/api/expect#expect-stringcontaining) 或 [`expect.stringMatching`](/api/expect#expect-stringmatching)来进行部分匹配。
你可以传递预期的可访问错误消息的确切字符串。或者,你可以通过传递正则表达式或使用 [`expect.stringContaining`](/api/expect#expect-stringcontaining) 或 [`expect.stringMatching`](/api/expect#expect-stringmatching) 来进行部分匹配。

```html
<input
Expand Down Expand Up @@ -480,7 +480,7 @@ await expect.element(
function toHaveAccessibleName(name?: string | RegExp): Promise<void>
```

这允许你断言一个元素具有预期的[可访问名称](https://w3c.github.io/accname/)。例如,它有助于断言表单元素和按钮是否被正确标记。
这允许你断言一个元素具有预期的 [可访问名称](https://w3c.github.io/accname/)。例如,它有助于断言表单元素和按钮是否被正确标记。

你可以传递预期的可访问名称的确切字符串,或者通过传递正则表达式进行部分匹配,也可以使用 [`expect.stringContaining`](/api/expect#expect-stringcontaining) 或 [`expect.stringMatching`](/api/expect#expect-stringmatching)。

Expand Down Expand Up @@ -512,7 +512,7 @@ await expect.element(getByTestId('input-title')).toHaveAccessibleName()
function toHaveAttribute(attribute: string, value?: unknown): Promise<void>
```

这允许你检查给定的元素是否具有某个属性。你还可以选择性地验证该属性是否具有特定的预期值或使用 [`expect.stringContaining`](/api/expect#expect-stringcontaining) 或 [`expect.stringMatching`](/api/expect#expect-stringmatching)进行部分匹配。
这允许你检查给定的元素是否具有某个属性。你还可以选择性地验证该属性是否具有特定的预期值或使用 [`expect.stringContaining`](/api/expect#expect-stringcontaining) 或 [`expect.stringMatching`](/api/expect#expect-stringmatching) 进行部分匹配。

```html
<button data-testid="ok-button" type="submit" disabled>ok</button>
Expand Down Expand Up @@ -948,7 +948,7 @@ await expect.element(getByTestId('switch')).toHaveRole('alert') // ❌
function toHaveSelection(selection?: string): Promise<void>
```

这允许断言某个元素具有一个[文本选择](https://developer.mozilla.org/en-US/docs/Web/API/Selection)。
这允许断言某个元素具有一个 [文本选择](https://developer.mozilla.org/en-US/docs/Web/API/Selection)。

这在检查元素内是否选择了文本或部分文本时非常有用。该元素可以是文本类型的输入框、`textarea`,或者是任何包含文本的其他元素,例如段落、`span`、`div` 等。

Expand Down
6 changes: 3 additions & 3 deletions api/browser/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: 命令 | 浏览器模式
outline: deep
---

# 命令
# 命令 {#commands}

命令是一个函数,它调用服务器上的另一个函数并将结果传递回浏览器。Vitest 公开了几个可以在浏览器测试中使用的内置命令。

Expand Down Expand Up @@ -59,7 +59,7 @@ expect(input).toHaveValue('a')
```

::: warning
CDP session仅适用于 `playwright` provider,并且仅在使用 `chromium` 浏览器时有效。有关详细信息,请参阅 playwright 的 [`CDPSession`](https://playwright.dev/docs/api/class-cdpsession)文档。
CDP session仅适用于 `playwright` provider,并且仅在使用 `chromium` 浏览器时有效。有关详细信息,请参阅 playwright 的 [`CDPSession`](https://playwright.dev/docs/api/class-cdpsession) 文档。
:::

## 自定义命令 {#custom-commands}
Expand Down Expand Up @@ -133,7 +133,7 @@ Vitest 在命令上下文中公开了几个`playwright`特定属性。
- `page`引用包含测试 iframe 的完整页面。这是协调器 HTML,为避免出现问题,最好不要碰它。
- `frame` 是一个异步方法,用于解析测试器 [`Frame`](https://playwright.dev/docs/api/class-frame)。它的 API 与 `page` 类似,但不支持某些方法。如果您需要查询元素,应优先使用 `context.iframe` 代替,因为它更稳定、更快速。
- `iframe` 是一个 [`FrameLocator`](https://playwright.dev/docs/api/class-framelocator),用于查询页面上的其他元素。
- `context` 是指唯一的[BrowserContext](https://playwright.dev/docs/api/class-browsercontext)。
- `context` 是指唯一的 [BrowserContext](https://playwright.dev/docs/api/class-browsercontext)。

```ts
import { BrowserCommand } from 'vitest/node'
Expand Down
4 changes: 2 additions & 2 deletions api/browser/context.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,15 +179,15 @@ await frame.click() // ❌ 不可用
::: danger IMPORTANT
目前,`frameLocator` 方法仅支持 `playwright` 提供者。

交互方法(如 `click` 或 `fill`)在 iframe 内的元素上始终可用,但使用 `expect.element` 进行断言时要求 iframe 具有[同源策略](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)。
交互方法(如 `click` 或 `fill`)在 iframe 内的元素上始终可用,但使用 `expect.element` 进行断言时要求 iframe 具有 [同源策略](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)。
:::

## `cdp`

`cdp` 导出返回当前的 Chrome DevTools 协议会话。它主要用于库作者在其基础上构建工具。

::: warning
CDP 会话仅适用于 `playwright` provider,并且仅在使用 `chromium` 浏览器时有效。有关详细信息,请参阅 playwright 的 [`CDPSession`](https://playwright.dev/docs/api/class-cdpsession)文档。
CDP 会话仅适用于 `playwright` provider,并且仅在使用 `chromium` 浏览器时有效。有关详细信息,请参阅 playwright 的 [`CDPSession`](https://playwright.dev/docs/api/class-cdpsession) 文档。
:::

```ts
Expand Down
2 changes: 1 addition & 1 deletion api/browser/interactivity.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ test('update input', async () => {
该方法聚焦元素、填充元素并在填充后触发一个 `input` 事件。您可以使用空字符串来清除字段。

::: tip
该 API 比使用 [`userEvent.type`](#userevent-type) 或 [`userEvent.keyboard`](#userevent-keyboard) 更快,但**不支持** [user-event `keyboard` syntax](https://testing-library.com/docs/user-event/keyboard) (例如,`{Shift}{selectall}`)。
该 API 比使用 [`userEvent.type`](#userevent-type) 或 [`userEvent.keyboard`](#userevent-keyboard) 更快,但**不支持** [user-event `keyboard` syntax](https://testing-library.com/docs/user-event/keyboard)(例如,`{Shift}{selectall}`)。

在不需要输入特殊字符或对按键事件进行细粒度控制的情况下,我们建议使用此 API 而不是 [`userEvent.type`](#userevent-type)。
:::
Expand Down
4 changes: 2 additions & 2 deletions api/expect.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ expect(input).toBe(2) // jest API
此外,`expect` 可以静态地使用来访问匹配器函数,稍后将会介绍。

::: warning
如果表达式没有类型错误,则 `expect` 对测试类型没有影响。 如果你想使用 Vitest 作为[类型检查器](/guide/testing-types),请使用 [`expectTypeOf`](/api/expect-typeof) 或 [`assertType`](/api/assert-type)
如果表达式没有类型错误,则 `expect` 对测试类型没有影响。 如果你想使用 Vitest 作为 [类型检查器](/guide/testing-types),请使用 [`expectTypeOf`](/api/expect-typeof) 或 [`assertType`](/api/assert-type)。
:::

## assert

- **类型:** `Chai.AssertStatic`

Vitest 将 Chai 的 [`assert` API](https://www.chaijs.com/api/assert/) 以 `expect.assert` 的形式重新导出。你可以在 [Assert API page](/api/assert) 页面查看支持的方法。
Vitest 将 Chai 的 [`assert` API](https://www.chaijs.com/api/assert/) 以 `expect.assert` 的形式重新导出。你可以在 [Assert API page](/api/assert) 页面查看支持的方法。

如果你需要缩小类型范围时,这将特别有用,因为 `expect.to*` 方法不支持此功能:

Expand Down
2 changes: 1 addition & 1 deletion api/mock.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ fn.length // == 2
:::

::: warning 类支持 {#class-support}
像 `mockReturnValue`、`mockReturnValueOnce`、`mockResolvedValue` 这样的简写方法不能用于模拟类。类构造函数在返回值方面具有[反直觉的行为](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor):
像 `mockReturnValue`、`mockReturnValueOnce`、`mockResolvedValue` 这样的简写方法不能用于模拟类。类构造函数在返回值方面具有 [反直觉的行为](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor):

```ts {2,7}
const CorrectDogClass = vi.fn(class {
Expand Down
2 changes: 1 addition & 1 deletion api/test.md
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ test.fails('repro #1234', () => {
- **别名:** `it.each`

::: tip
`test.each` 是为兼容 Jest 而提供的,Vitest 还提供了 [`test.for`](#test-for),额外支持集成 [`TestContext`](/guide/test-context)。
`test.each` 是为兼容 Jest 而提供的,Vitest 还提供了 [`test.for`](#test-for),额外支持集成 [`TestContext`](/guide/test-context)。
:::

当需要以不同变量运行相同测试时,使用 `test.each`。你可以在测试名称中按测试函数参数顺序,使用 [printf 格式化](https://nodejs.org/api/util.html#util_util_format_format_args) 注入参数。
Expand Down
Loading
Loading