@@ -8,27 +8,27 @@ Vue Test Utils 帮助你为 Vue 组件编写测试。然而,VTU 的功能是
8
8
9
9
## 不要测试实现细节
10
10
11
- 从用户的角度考虑输入和输出。大致来说,这些是你在为 Vue 组件编写测试时应考虑的所有内容 :
11
+ 从用户的角度考虑输入和输出。以下大致是在为 Vue 组件编写测试时应当考虑的所有内容 :
12
12
13
13
| ** 输入** | 示例 |
14
14
| -------- | ----------------------------------- |
15
- | 交互 | 点击、输入……任何 “人类”交互 |
15
+ | 交互 | 点击、输入……及任何 “人类”交互 |
16
16
| Props | 组件接收的参数 |
17
17
| 数据流 | 从 API 调用、数据订阅等中传入的数据 |
18
18
19
19
| ** 输出** | 示例 |
20
20
| -------- | ---------------------------- |
21
21
| DOM 元素 | 渲染到文档中的任何可观察节点 |
22
- | 事件 | 发出的事件 (使用 ` $emit ` ) |
22
+ | 事件 | 触发的事件 (使用 ` $emit ` ) |
23
23
| 副作用 | 如 ` console.log ` 或 API 调用 |
24
24
25
25
** 其他一切都是实现细节** 。
26
26
27
- 注意,这个列表没有包括内部方法 、中间状态或甚至数据等元素。
27
+ 注意,这个列表不包含内部方法 、中间状态或甚至数据等元素。
28
28
29
- 经验法则是** 测试在重构时不应失败** ,也就是说,当我们更改其内部实现而不改变其行为时,测试不应失败。如果发生这种情况,测试可能依赖于实现细节 。
29
+ 经验法则是** 测试在重构时不应失败** ,也就是说,当我们更改其内部实现而不改变其行为时,测试不应失败。如果发生这种情况,则测试可能依赖于实现细节 。
30
30
31
- 例如,假设有一个基本的计数器组件,包含一个用于增加计数的按钮 :
31
+ 例如,假设有一个简单的计数器组件,包含一个增加计数的按钮 :
32
32
33
33
``` vue
34
34
<template>
@@ -71,10 +71,10 @@ test('counter text updates', async () => {
71
71
注意这里我们在更新其内部数据,并且也依赖于用户视角的细节,如 CSS 类。
72
72
73
73
::: tip
74
- 注意,更改数据或 CSS 类名都会导致测试失败。然而,组件仍然可以按预期工作。这被称为 ** 假阳性 (false positive)** 。
74
+ 注意,更改数据或 CSS 类名都会导致测试失败。然而,组件仍然可以按预期工作。这种情况称为 ** 误报 (false positive)** 。
75
75
:::
76
76
77
- 相反,以下测试尝试坚持使用上述输入和输出 :
77
+ 相反,以下测试尽量使用前文提到的输入和输出 :
78
78
79
79
``` js
80
80
import { mount } from ' @vue/test-utils'
@@ -92,34 +92,34 @@ test('text updates on clicking', async () => {
92
92
})
93
93
```
94
94
95
- 像 [ Vue Testing Library] ( https://github.com/testing-library/vue-testing-library/ ) 这样的库就是基于这些原则构建的。如果你对这种方法感兴趣,确保查看一下 。
95
+ 像 [ Vue Testing Library] ( https://github.com/testing-library/vue-testing-library/ ) 这样的库就是基于这些原则构建的。如果你对这种方法感兴趣,一定要看看 。
96
96
97
97
## 构建更小、更简单的组件
98
98
99
- 根据经验,如果一个组件的功能更少,那么它将更容易测试 。
99
+ 根据经验,一个组件的功能越少,它就越容易测试 。
100
100
101
- 构建更小的组件将使它们更具组合性,更易于理解。以下是一些建议,以使组件更简单 。
101
+ 构建更小的组件将使它们更易于组合和理解。以下是一些让组件更简单的建议 。
102
102
103
103
### 提取 API 调用
104
104
105
- 通常,你会在应用程序中执行多个 HTTP 请求。从测试的角度来看,HTTP 请求为组件提供输入,组件也可以发送 HTTP 请求。
105
+ 你通常会在应用中执行一些 HTTP 请求。从测试的角度来看,HTTP 请求为组件提供输入,组件也可以发送 HTTP 请求。
106
106
107
107
::: tip
108
108
如果你不熟悉测试 API 调用,请查看[ 发起 HTTP 请求] ( ../advanced/http-requests.md ) 指南。
109
109
:::
110
110
111
111
### 提取复杂方法
112
112
113
- 有时,一个组件可能包含复杂的方法、执行重计算或使用多个依赖项 。
113
+ 有时,一个组件可能包含复杂的方法、密集的计算或使用多个依赖项 。
114
114
115
- 这里的建议是** 提取该方法并将其导入组件** 。这样,你可以使用 Jest 或其他测试运行器在隔离状态下测试该方法 。
115
+ 这里的建议是** 提取该方法并将其导入组件** 。这样,你可以使用 Jest 或其他测试运行器独立测试该方法 。
116
116
117
- 这还有一个额外的好处,就是最终得到一个更易于理解的组件 ,因为复杂的逻辑被封装在另一个文件中。
117
+ 这样做还有一个好处,就是组件最终会更易于理解 ,因为复杂的逻辑被封装在另一个文件中。
118
118
119
- 此外,如果复杂的方法难以设置或速度慢 ,你可能希望对其进行模拟,以使测试更简单和更快速。关于 [ 发起 HTTP 请求] ( ../advanced/http-requests.md ) 的示例就是一个很好的例子—— axios 是一个相当复杂的库 !
119
+ 此外,如果这个复杂方法难以调试或速度较慢 ,你可能希望对其进行模拟,以使测试更简单和更快速。[ 发起 HTTP 请求] ( ../advanced/http-requests.md ) 中的示例就是一个很好的例子—— axios 是一个很复杂的库 !
120
120
121
121
## 在编写组件之前编写测试
122
122
123
- 如果你提前编写测试,就无法编写不可测试的代码 !
123
+ 如果你提前编写测试,就不会写出不可测试的代码 !
124
124
125
- 我们的[ 快速上手] ( ../essentials/a-crash-course.md ) 提供了一个示例,说明如何在编写代码之前编写测试,从而导致可测试的组件 。这也帮助你发现和测试边缘情况。
125
+ 我们的[ 快速上手] ( ../essentials/a-crash-course.md ) 提供了一个示例,说明如何在编写代码之前编写测试,从而使组件可以测试 。这也帮助你发现和测试边缘情况。
0 commit comments