在路径`tp5/application/index/controller/Index.php`中新建一个test的操作:
~~~
<?php
namespace app\index\controller;
class Index
{
public function index()
{
...
}
public function test(){
return 'Hello world!';
}
}
~~~
在tests目录下新建一个`IndexTest.php`的测试用例类,并在其中键入一下的代码:
~~~
<?php
namespace tests;
class IndexTest extends TestCase
{
public function testTest()
{
$this->visit('/index/index/test')->see('Hello world!');
}
}
~~~
该测试用例是继承ThinkPHP单元测试扩展类TestCase的。该类提供了多个用于支持ThinkPHP进行单元测试的方法。
其中,visit方法是接受一个作为URI的参数模拟向ThinkPHP框架中的某个测试发起请求。
而see方法则是断言输出的结果是否符合一个正则表达式,其中第一个参数为要匹配的正则表达式,第二个参数的值为true时断言正则表达式不出现在结果中,为false时断言正则表达式出现在结果中,默认为false。
输入一下命令,进行测试:
> php think unit
这条命令需要在ThinkPHP根目录下运行,
~~~
D:\phpStudy\WWW\workspace\DragonApi>php think unit
PHPUnit 4.8.36 by Sebastian Bergmann and contributors.
...
Time: 561 ms, Memory: 5.75MB
OK (2 tests, 4 assertions)
~~~
在结果的最后一行中,显示OK,说明所有的测试用例都测试通过了,在括号中的内容是表示有2个测试用例类,4个断言被测试了。之所以有2 tests是因为tests目录下还有一个ExampleTest.php的测试类。而 4 assertions则表明是有四个测试用例。
当我们把
~~~
$this->visit('/index/index/test')->see('Hello world!');
~~~
修改成
~~~
$this->visit('/index/index/test');
~~~
可以发现,现在的assertions只剩下三个了。因此,可以得知visit内部也有断言。