laravel单元测试
-
单元测试目录: 项目更目录下的 tests 目录 -
目录说明
Feature : 功能测试 (测试整个接口)Unit : 单元测试 (函数级别的测试) -
实例流程
-
在 Feature 下新建 AuthTest -
新建一个测试函数, 必须已 test 开头 <?php
namespace Tests\Feature;
use Tests\TestCase;
class AuthTest extends TestCase
{
public function testRegister()
{
$response = $this->post('wx/auth/register');
echo $response->getContent();
}
}
-
运行, 在 phpstorm 中点击函数前面运行按钮。 -
点击 解释器 , 我本地是 docker 中的环境, 这里选择 docker ,选择 镜像 和 PHP路径 (which php 查看)(TODO 我的环境是 docker隐射到本地,这里必须用本地的php环境才可以调试! ) -
修改 根目录下的 phpunit.xml <server name="DB_CONNECTION" value="mysql"/>
<server name="DB_DATABASE" value="litemall_test"/> # litemall_test 数据库名
-
2个示例 <?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
class UserTest extends TestCase
{
use DatabaseTransactions;
public function testRegister()
{
$response = $this->post('/wx/auth/register', [
'username' => 'test02',
'password' => '123456',
'mobile' => '18811112222',
'code' => '123'
]);
$response->assertStatus(200);
$ret = $response->getOriginalContent();
$this->assertEquals(0, $ret['errno']);
$this->assertNotEmpty($ret['data']);
}
public function testRegisterMobile()
{
$response = $this->post('/wx/auth/register', [
'username' => 'test02',
'password' => '123456',
'mobile' => '188111122212',
'code' => '123'
]);
$response->assertStatus(200);
$ret = $response->getOriginalContent();
$this->assertEquals(707, $ret['errno']);
}
}
-
如上解析
-
use DatabaseTransactions; 加了之后,所有数据库的事务都不会添加到数据库中。有效防止脏数据。 -
assertEquals, assertNotEmpty 都是断言,用户判断得到的结果的判断。 -
如果没有断言,需要加一个备注。则不会报错。 /**
* @doesNotPerformAssertions
*/
|