diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 0c4a7daf3..5a7f5be4f 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -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`)。
diff --git a/.vitepress/scripts/cli-generator.ts b/.vitepress/scripts/cli-generator.ts
index 15795b111..9cd40630f 100644
--- a/.vitepress/scripts/cli-generator.ts
+++ b/.vitepress/scripts/cli-generator.ts
@@ -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')
diff --git a/advanced/pool.md b/advanced/pool.md
index e38ec1853..a1bf6691c 100644
--- a/advanced/pool.md
+++ b/advanced/pool.md
@@ -1,4 +1,4 @@
-# 自定义运行池
+# 自定义运行池 advanced {#custom-pool}
::: warning
这是一个高级且非常底层的 API。如果你只是想 [运行测试](/guide/),你可能不需要这个。它主要由库作者使用。
diff --git a/api/advanced/metadata.md b/api/advanced/metadata.md
index dfba92250..1d4ef7654 100644
--- a/api/advanced/metadata.md
+++ b/api/advanced/metadata.md
@@ -1,4 +1,4 @@
-# 任务元数据 高级
+# 任务元数据 高级 {#task-metadata}
如果你正在开发自定义报告器或使用 Vitest Node.js API,你可能会发现将在各种上下文中执行的测试中的数据传递给报告器或自定义 Vitest 处理程序很有用。
@@ -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 状态获取此信息:
diff --git a/api/advanced/plugin.md b/api/advanced/plugin.md
index 1b447e17e..6cc912355 100644
--- a/api/advanced/plugin.md
+++ b/api/advanced/plugin.md
@@ -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
///
@@ -59,7 +59,7 @@ Vitest 通过 `Vite` namespace 重新导出所有仅 Vite 类型的导入,我
### project
-该插件所属的当前[测试项目](./test-project)。
+该插件所属的当前 [测试项目](./test-project)。
::: warning 浏览器模式
请注意,如果我们依赖浏览器功能,则 `project.browser` 字段尚未设置。请改用 [`reporter.onBrowserInit`](./reporters#onbrowserinit) 事件。
@@ -75,7 +75,7 @@ vitest.config.reporters.push([['my-reporter', {}]])
```
::: warning 配置已解析完成
-请注意,Vitest 已经解析了配置,因此某些类型可能与通常的用户配置不同。这也意味着某些属性将不会再次解析,例如 `setupFile` 。如果我们要添加新文件,请确保先解析它。
+请注意,Vitest 已经解析了配置,因此某些类型可能与通常的用户配置不同。这也意味着某些属性将不会再次解析,例如 `setupFile`。如果我们要添加新文件,请确保先解析它。
此时尚未创建记者,因此修改 `vitest.reporters` 将不起作用,因为它将被覆盖。如果我们需要注入自己的记者,请修改配置。
:::
diff --git a/api/advanced/runner.md b/api/advanced/runner.md
index 157e935eb..65af6db16 100644
--- a/api/advanced/runner.md
+++ b/api/advanced/runner.md
@@ -1,4 +1,4 @@
-# 运行器 API advanced
+# 运行器 API advanced {#runner-api}
::: warning 注意
这是高级 API。如果你只需要 [运行测试](/guide/),你可能不需要这个。它主要被库的作者使用。
@@ -229,7 +229,7 @@ interface Test 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 {
diff --git a/api/advanced/test-case.md b/api/advanced/test-case.md
index 356e1aab0..644f4c214 100644
--- a/api/advanced/test-case.md
+++ b/api/advanced/test-case.md
@@ -157,7 +157,7 @@ test('the validation works correctly', { meta: { decorated: true } })
function result(): TestResult
```
-测试结果。如果测试尚未完成或刚刚开始收集,等于 `TestResultPending` :
+测试结果。如果测试尚未完成或刚刚开始收集,等于 `TestResultPending`:
```ts
export interface TestResultPending {
diff --git a/api/advanced/test-module.md b/api/advanced/test-module.md
index 0426f840b..9041508d5 100644
--- a/api/advanced/test-module.md
+++ b/api/advanced/test-module.md
@@ -66,7 +66,7 @@ describe('the validation works correctly', (task) => {
```
:::tip
-如果元数据是在收集过程中附加的(在 `test` 函数之外),那么它将在自定义报告器中的['onTestModuleCollectd'](./reporters#onTestModuleCollected) 挂钩中可用。
+如果元数据是在收集过程中附加的(在 `test` 函数之外),那么它将在自定义报告器中的 ['onTestModuleCollectd'](./reporters#onTestModuleCollected) 挂钩中可用。
:::
## diagnostic
diff --git a/api/advanced/vitest.md b/api/advanced/vitest.md
index 6b9f78284..0df957ac5 100644
--- a/api/advanced/vitest.md
+++ b/api/advanced/vitest.md
@@ -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 会在创建这个数组前就报错。
@@ -149,7 +149,7 @@ function getProvidedContext(): ProvidedContext
function getProjectByName(name: string): TestProject
```
-此方法通过名称返回项目。类似于调用 `vitest.projects.find` 。
+此方法通过名称返回项目。类似于调用 `vitest.projects.find`。
::: warning
如果项目不存在,此方法将返回根项目 - 请确保再次检查返回的项目是否是我们要找的项目。
@@ -532,7 +532,7 @@ Vitest 可以根据 `pool` 或 `locations` 选项为同一文件创建不同的
function matchesProjectFilter(name: string): boolean
```
-检查名称是否与当前 [项目过滤器](/guide/cli#project) 匹配。如果没有项目过滤器,则始终返回 `true` 。
+检查名称是否与当前 [项目过滤器](/guide/cli#project) 匹配。如果没有项目过滤器,则始终返回 `true`。
无法通过编程方式更改 `--project` CLI 选项。
@@ -590,7 +590,7 @@ function experimental_parseSpecification(
): Promise
```
-该函数会收集文件内的所有测试,但不会执行它们。它借助 Vite 的 `ssrTransform` ,并在其之上使用 rollup 的 `parseAst` 进行静态分析,从而提取所有可识别的测试用例。
+该函数会收集文件内的所有测试,但不会执行它们。它借助 Vite 的 `ssrTransform`,并在其之上使用 rollup 的 `parseAst` 进行静态分析,从而提取所有可识别的测试用例。
::: warning
如果 Vitest 无法解析测试的名称,它将在测试或套件中注入一个 `dynamic: true` 属性。`id` 也会带有 `-dynamic` 后缀,以避免破坏已正确收集的测试。
@@ -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` 的测试转换成名称模式:
@@ -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 4.0.0 {#parsespecifications}
diff --git a/api/assert.md b/api/assert.md
index f7ed29d7f..7754701dd 100644
--- a/api/assert.md
+++ b/api/assert.md
@@ -111,7 +111,7 @@ test('assert.strictEqual', () => {
- **类型:** `(actual: T, expected: T, message?: string) => void`
-断言 `actual` 深度等于 `expected` 。
+断言 `actual` 深度等于 `expected`。
```ts
import { assert, test } from 'vitest'
@@ -125,7 +125,7 @@ test('assert.deepEqual', () => {
- **类型:** `(actual: T, expected: T, message?: string) => void`
-断言 `actual` 不深度等于 `expected` 。
+断言 `actual` 不深度等于 `expected`。
```ts
import { assert, test } from 'vitest'
@@ -139,7 +139,7 @@ test('assert.notDeepEqual', () => {
- **类型:** `(valueToCheck: number, valueToBeAbove: number, message?: string) => void`
-断言 `valueToCheck` 严格大于 (>) `valueToBeAbove` 。
+断言 `valueToCheck` 严格大于 (>) `valueToBeAbove`。
```ts
import { assert, test } from 'vitest'
@@ -153,7 +153,7 @@ test('assert.isAbove', () => {
- **类型:** `(valueToCheck: number, valueToBeAtLeast: number, message?: string) => void`
-断言 `valueToCheck` 大于等于 (>=) `valueToBeAtLeast` 。
+断言 `valueToCheck` 大于等于 (>=) `valueToBeAtLeast`。
```ts
import { assert, test } from 'vitest'
@@ -168,7 +168,7 @@ test('assert.isAtLeast', () => {
- **类型:** `(valueToCheck: number, valueToBeBelow: number, message?: string) => void`
-断言 `valueToCheck` 严格小于 (<) `valueToBeBelow` 。
+断言 `valueToCheck` 严格小于 (<) `valueToBeBelow`。
```ts
import { assert, test } from 'vitest'
@@ -182,7 +182,7 @@ test('assert.isBelow', () => {
- **类型:** `(valueToCheck: number, valueToBeAtMost: number, message?: string) => void`
-断言 `valueToCheck` 小于等于 (<=) `valueToBeAtMost` 。
+断言 `valueToCheck` 小于等于 (<=) `valueToBeAtMost`。
```ts
import { assert, test } from 'vitest'
@@ -692,7 +692,7 @@ test('assert.instanceOf', () => {
- `(haystack: WeakSet, needle: T, message?: string) => void`
- `(haystack: T, needle: Partial, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言数组中是否包含一个值、字符串中是否包含一个子字符串、或者对象中是否包含一组属性。
+断言 `haystack` 包含 `needle`。可以用来断言数组中是否包含一个值、字符串中是否包含一个子字符串、或者对象中是否包含一组属性。
```ts
import { assert, test } from 'vitest'
@@ -716,7 +716,7 @@ test('assert.include', () => {
- `(haystack: WeakSet, needle: T, message?: string) => void`
- `(haystack: T, needle: Partial, message?: string) => void`
-断言 `haystack` 不包含 `needle` 。可以用来断言数组中是否不包含一个值、字符串中是否不包含一个子字符串、或者对象中是否不包含一组属性。
+断言 `haystack` 不包含 `needle`。可以用来断言数组中是否不包含一个值、字符串中是否不包含一个子字符串、或者对象中是否不包含一组属性。
```ts
import { assert, test } from 'vitest'
@@ -735,7 +735,7 @@ test('assert.notInclude', () => {
- `(haystack: readonly T[] | ReadonlySet | ReadonlyMap, needle: T, message?: string) => void`
- `(haystack: T, needle: T extends WeakSet ? never : Partial, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言数组中是否包含一个值或对象中是否包含一组属性。使用深度相等。
+断言 `haystack` 包含 `needle`。可以用来断言数组中是否包含一个值或对象中是否包含一组属性。使用深度相等。
```ts
import { assert, test } from 'vitest'
@@ -756,7 +756,7 @@ test('assert.deepInclude', () => {
- `(haystack: readonly T[] | ReadonlySet | ReadonlyMap, needle: T, message?: string) => void`
- `(haystack: T, needle: T extends WeakSet ? never : Partial, message?: string) => void`
-断言 `haystack` 不包含 `needle` 。可以用来断言数组中是否不包含一个值或对象中是否不包含一组属性。使用深度相等。
+断言 `haystack` 不包含 `needle`。可以用来断言数组中是否不包含一个值或对象中是否不包含一组属性。使用深度相等。
```ts
import { assert, test } from 'vitest'
@@ -774,7 +774,7 @@ test('assert.notDeepInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 包含 `needle` 。 可以用来断言对象中是否包含一组属性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
+断言 `haystack` 包含 `needle`。 可以用来断言对象中是否包含一组属性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
```ts
import { assert, test } from 'vitest'
@@ -789,7 +789,7 @@ test('assert.nestedInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 不包含 `needle` 。可以用来断言对象中是否不包含一组属性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
+断言 `haystack` 不包含 `needle`。可以用来断言对象中是否不包含一组属性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
```ts
import { assert, test } from 'vitest'
@@ -804,7 +804,7 @@ test('assert.nestedInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言对象中是否包含一组属性,同时检查深度相等性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
+断言 `haystack` 包含 `needle`。可以用来断言对象中是否包含一组属性,同时检查深度相等性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
```ts
import { assert, test } from 'vitest'
@@ -822,7 +822,7 @@ test('assert.deepNestedInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 不包含 `needle` 。可以用来断言对象中是否不包含一组属性,同时检查深度相等性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
+断言 `haystack` 不包含 `needle`。可以用来断言对象中是否不包含一组属性,同时检查深度相等性。允许使用点和括号表示法来引用嵌套属性。属性名中的 ‘[]’ 和 ‘.’ 可以使用双反斜杠转义。
```ts
import { assert, test } from 'vitest'
@@ -840,7 +840,7 @@ test('assert.notDeepNestedInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言对象中是否包含一组属性,同时忽略继承的属性。
+断言 `haystack` 包含 `needle`。可以用来断言对象中是否包含一组属性,同时忽略继承的属性。
```ts
import { assert, test } from 'vitest'
@@ -854,7 +854,7 @@ test('assert.ownInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言对象中是否不包含一组属性,同时忽略继承的属性
+断言 `haystack` 包含 `needle`。可以用来断言对象中是否不包含一组属性,同时忽略继承的属性
```ts
import { assert, test } from 'vitest'
@@ -875,7 +875,7 @@ test('assert.notOwnInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 包含 `needle` 。可以用来断言对象中是否包含一组属性,同时忽略继承的属性并检查深度相等性。
+断言 `haystack` 包含 `needle`。可以用来断言对象中是否包含一组属性,同时忽略继承的属性并检查深度相等性。
```ts
import { assert, test } from 'vitest'
@@ -889,7 +889,7 @@ test('assert.deepOwnInclude', () => {
- **类型:** `(haystack: any, needle: any, message?: string) => void`
-断言 `haystack` 不包含 `needle` 。可以用来断言对象中是否不包含一组属性,同时忽略继承的属性并检查深度相等性。
+断言 `haystack` 不包含 `needle`。可以用来断言对象中是否不包含一组属性,同时忽略继承的属性并检查深度相等性。
```ts
import { assert, test } from 'vitest'
@@ -903,7 +903,7 @@ test('assert.notDeepOwnInclude', () => {
- **类型:** `(value: string, regexp: RegExp, message?: string) => void`
-断言 `value` 匹配正则表达式 `regexp` 。
+断言 `value` 匹配正则表达式 `regexp`。
```ts
import { assert, test } from 'vitest'
@@ -917,7 +917,7 @@ test('assert.match', () => {
- **类型:** `(value: string, regexp: RegExp, message?: string) => void`
-断言 `value` 不匹配正则表达式 `regexp` 。
+断言 `value` 不匹配正则表达式 `regexp`。
```ts
import { assert, test } from 'vitest'
@@ -960,7 +960,7 @@ test('assert.notProperty', () => {
- **类型:** `(object: T, property: string, value: V, message?: string) => void`
-断言 `object` 具有由 `property` 指定的直接或继承属性,其值为 `value` 。使用严格相等检查(===)。
+断言 `object` 具有由 `property` 指定的直接或继承属性,其值为 `value`。使用严格相等检查(===)。
```ts
import { assert, test } from 'vitest'
@@ -974,7 +974,7 @@ test('assert.notPropertyVal', () => {
- **类型:** `(object: T, property: string, value: V, message?: string) => void`
-断言 `object` 没有由 `property` 指定的直接或继承属性,其值为 `value` 。使用严格相等检查(===)。
+断言 `object` 没有由 `property` 指定的直接或继承属性,其值为 `value`。使用严格相等检查(===)。
```ts
import { assert, test } from 'vitest'
@@ -989,7 +989,7 @@ test('assert.notPropertyVal', () => {
- **类型:** `(object: T, property: string, value: V, message?: string) => void`
-断言 `object` 具有由 `property` 指定的直接或继承属性,其值为 `value` 。使用深度相等检查。
+断言 `object` 具有由 `property` 指定的直接或继承属性,其值为 `value`。使用深度相等检查。
```ts
import { assert, test } from 'vitest'
@@ -1005,7 +1005,7 @@ test('assert.deepPropertyVal', () => {
- **类型:** `(object: T, property: string, value: V, message?: string) => void`
-断言 `object` 没有由 `property` 指定的直接或继承属性,其值为 `value` 。使用深度相等检查。
+断言 `object` 没有由 `property` 指定的直接或继承属性,其值为 `value`。使用深度相等检查。
```ts
import { assert, test } from 'vitest'
@@ -1055,7 +1055,7 @@ test('assert.deepPropertyVal', () => {
- **类型:** `(object: T, property: string, value: any, message?: string) => void`
-断言 `object` 具有由 `property` 指定的属性,其值为 `value` 给出。 `property` 可以使用点和方括号表示法进行嵌套引用。使用严格相等检查 (===)。
+断言 `object` 具有由 `property` 指定的属性,其值为 `value` 给出。`property` 可以使用点和方括号表示法进行嵌套引用。使用严格相等检查 (===)。
```ts
import { assert, test } from 'vitest'
@@ -1069,7 +1069,7 @@ test('assert.nestedPropertyVal', () => {
- **类型:** `(object: T, property: string, value: any, message?: string) => void`
-断言 `object` 没有由 `property` 指定的属性,其值为 `value` 给出。 `property` 可以使用点和方括号表示法进行嵌套引用。使用严格相等检查 (===)。
+断言 `object` 没有由 `property` 指定的属性,其值为 `value` 给出。`property` 可以使用点和方括号表示法进行嵌套引用。使用严格相等检查 (===)。
```ts
import { assert, test } from 'vitest'
@@ -1084,7 +1084,7 @@ test('assert.notNestedPropertyVal', () => {
- **类型:** `(object: T, property: string, value: any, message?: string) => void`
-断言 `object` 具有由 `property` 指定的属性,其值为 `value` 给出。 `property` 可以使用点和方括号表示法进行嵌套引用。使用深度相等检查。
+断言 `object` 具有由 `property` 指定的属性,其值为 `value` 给出。`property` 可以使用点和方括号表示法进行嵌套引用。使用深度相等检查。
```ts
import { assert, test } from 'vitest'
@@ -1099,7 +1099,7 @@ test('assert.notNestedPropertyVal', () => {
- **类型:** `(object: T, property: string, value: any, message?: string) => void`
-断言 `object` 没有由 `property` 指定的属性,其值为 `value` 给出。 `property` 可以使用点和方括号表示法进行嵌套引用。使用深度相等检查。
+断言 `object` 没有由 `property` 指定的属性,其值为 `value` 给出。`property` 可以使用点和方括号表示法进行嵌套引用。使用深度相等检查。
```ts
import { assert, test } from 'vitest'
@@ -1132,7 +1132,7 @@ test('assert.lengthOf', () => {
- **类型:** `(object: T, keys: Array