Skip to content

Commit ed49e75

Browse files
committed
docs: PHPUnit 单元测试
1 parent 449b390 commit ed49e75

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

laravel/readme/25. 2019-06-10-Laravel 基于 PHPUnit 的单元测试.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,10 @@ protected function setUp(): void
154154

155155

156156
### 对错误进行测试
157-
默认情况下,`PHPUnit` 会将 `PHP` 错误、警告和通知都转化为异常,在上一篇 PHP 编排文件 phpunit.xml 中我们提到,Laravel 也默认配置为做这些转化,所以我们可以通过测试异常的方式对业务代码中的错误进行测试。具体用法和异常测试一样,就不再赘述了。
157+
默认情况下,`PHPUnit` 会将 `PHP` 错误、警告和通知都转化为异常,在上一篇 `PHP` 编排文件 `phpunit.xml` 中我们提到,`Laravel` 也默认配置为做这些转化,所以我们可以通过测试异常的方式对业务代码中的错误进行测试。具体用法和异常测试一样,就不再赘述了。
158158

159159
### 测试的依赖关系
160-
有的时候,我们需要测试的两个用例之间可能有依赖关系,比如我们在 TestService 定义如下个方法:
160+
有的时候,我们需要测试的两个用例之间可能有依赖关系,比如我们在 `TestService` 定义如下个方法:
161161

162162
```
163163
protected $stack = [];
@@ -178,7 +178,7 @@ public function getStackSize()
178178
}
179179
```
180180

181-
我们在测试 stackContains 方法时,往往要先调用 init 方法,但是在单元测试中,每个方法都有独立的测试用例,如果多次调用有可能会对数据造成污染,那我们能否在 init 方法测试用例的运行基础上运行 stackContains 方法的测试用例呢?这个时候,我们说这两个测试用例之间是具有依赖关系的,PHPUnit 中通过 @depends 注解对这种依赖关系进行了支持,我们可以在 Unit\ExampleTest 中编写测试用例如下:
181+
我们在测试 `stackContains` 方法时,往往要先调用 `init` 方法,但是在单元测试中,每个方法都有独立的测试用例,如果多次调用有可能会对数据造成污染,那我们能否在 `init` 方法测试用例的运行基础上运行 `stackContains` 方法的测试用例呢?这个时候,我们说这两个测试用例之间是具有依赖关系的,`PHPUnit` 中通过 `@depends` 注解对这种依赖关系进行了支持,我们可以在 `Unit\ExampleTest` 中编写测试用例如下:
182182

183183
```
184184
public function testInitStack()
@@ -200,10 +200,10 @@ public function testStackContains(TestService $service)
200200
}
201201
```
202202

203-
在 testStackContains 用例中,我们将 testInitStack 用例返回的 $service 实例传递进来,并在此基础上进行测试。
203+
`testStackContains` 用例中,我们将 `testInitStack` 用例返回的 `$service` 实例传递进来,并在此基础上进行测试。
204204

205205
### 数据提供器
206-
除了支持测试用例之间的依赖之外,PHPUnit 还可以通过 @dataProvider 注解为多个测试用例提供初始化数据:
206+
除了支持测试用例之间的依赖之外,`PHPUnit` 还可以通过 `@dataProvider` 注解为多个测试用例提供初始化数据:
207207

208208
```
209209
public function initDataProvider()
@@ -227,9 +227,9 @@ public function testIsStackContains()
227227
}
228228
```
229229

230-
在这个测试用例中,我们通过 initDataProvider 方法作为数据提供器,数据供给器方法必须声明为 public,其返回值要么是一个数组,其每个元素也是数组;要么是一个实现了 Iterator 接口的对象,在对它进行迭代时每步产生一个数组。每个数组都是测试数据集的一部分,将以它的内容作为参数来调用测试方法。
230+
在这个测试用例中,我们通过 `initDataProvider` 方法作为数据提供器,数据供给器方法必须声明为 `public`,其返回值要么是一个数组,其每个元素也是数组;要么是一个实现了 `Iterator` 接口的对象,在对它进行迭代时每步产生一个数组。每个数组都是测试数据集的一部分,将以它的内容作为参数来调用测试方法。
231231

232-
然后我们在需要用到这个数据提供器的测试用例上用 @dataProvider 注解进行声明,在这个示例中我们迭代数据提供器数组,将其中的数据作为参数传入 TestService 的 stackContains 方法以判断对应值在 stack 属性中是否存在。
232+
然后我们在需要用到这个数据提供器的测试用例上用 `@dataProvider` 注解进行声明,在这个示例中我们迭代数据提供器数组,将其中的数据作为参数传入 `TestService``stackContains` 方法以判断对应值在 `stack` 属性中是否存在。
233233

234234
以下是上述用例运行结果:
235235

0 commit comments

Comments
 (0)