多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
在路径`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内部也有断言。