记一次TP单元测试报500错误的问题
一直听说好的单元测试能提高代码质量,昨天终于在下定决心弄懂单元测试,但第一步就把我干趴下了,我的问题在下面
开始都没有什么问题,tp5单元测试的手册就那一点,通过看云上一位仁兄写的 thinkphp单元测试手册 我顺利的安装成功了单元测试模块,就在第一步测试的时候出现问题了
我写了两个断言,但只有一个能执行通过,另一个一直报 500 错误
namespace tests;
class IndexTest extends TestCase
{
public function testHello1(){
$this->makeRequest('get','/index/index/hello',['name'=>'yangyi'])->see('Hello,yangyi',false);
}
public function testIndex(){
$this->makeRequest('get','/index/index/hello',['name'=>'yangyi'])->see('Hello,yangy',false);
}
}
错误信息:
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
.F 2 / 2 (100%)
Time: 599 ms, Memory: 6.00MB
There was 1 failure:
# 就是这里
1) tests\IndexTest::testIndex
A request to [http://thxs.tp5.com/index/index/hello] failed. Received status code [500].
F:\www\yy\vendor\topthink\think-testing\src\InteractsWithPages.php:485
F:\www\yy\vendor\topthink\think-testing\src\InteractsWithPages.php:458
F:\www\yy\tests\IndexTest.php:19
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestCase.php:1071
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestCase.php:939
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestResult.php:698
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestCase.php:894
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestSuite.php:755
F:\www\yy\vendor\phpunit\phpunit\src\Framework\TestSuite.php:755
F:\www\yy\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:545
F:\www\yy\vendor\phpunit\phpunit\src\TextUI\Command.php:195
F:\www\yy\vendor\topthink\think-testing\src\command\Test.php:42
F:\www\yy\thinkphp\library\think\console\Command.php:175
F:\www\yy\thinkphp\library\think\Console.php:670
F:\www\yy\thinkphp\library\think\Console.php:261
F:\www\yy\thinkphp\library\think\Console.php:198
F:\www\yy\thinkphp\library\think\Console.php:115
FAILURES!
Tests: 2, Assertions: 3, Failures: 1.
也是经验缺乏,错误找到晚上一点没找到原因,就在今天,我人家的源码没一点问题,就是通不过测试,我就在测试的源码中把获取的网页信息放入了日志文件,通过查看日志才知道出了什么错
我之前在tp5 中定义了一个行为 在加载的时候定义一些常量,第一次执行的时候没什么问题,第二次执行的时候因为那些常量已经定义过了,所以才会出现问题,报 500 的错误,
还是对单元测试流程不熟悉引起的,因为正常访问网页没什么问题,但运行单元测试的时候就会重复定义