小兔网

下面由phpstorm教程栏目给大家介绍phpstorm hyperf单元测试配置,希望对需要的朋友有所帮助!

教你进行phpstorm hyperf单元测试配置-phpstorm

1、创建一个testCase基类继承于PHPUnit\Framework\TestCase

知识兔

tips:把登录成功后的token放到缓存, 下次接口请求可以直接从缓存取。

<?phpdeclare(strict_types=1);/** * This file is part of Hyperf. * * @link     https://www.hyperf.io * @document https://doc.hyperf.io * @contact  该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。 * @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE */namespace HyperfTest;use App\Model\SysUser;use App\Service\Instance\JwtInstance;use Hyperf\Testing\Client;use PHPUnit\Framework\TestCase;/** * Class HttpTestCase. * @method get($uri, $data = [], $headers = []) * @method post($uri, $data = [], $headers = []) * @method json($uri, $data = [], $headers = []) * @method file($uri, $data = [], $headers = []) */abstract class AdminTestCase extends TestCase{    /**     * @var Client     */    protected $client;    // token缓存key    protected $cacheKey = 'test_admin_token';    // token    protected $header = [];    public function __construct($name = null, array $data = [], $dataName = '')    {        parent::__construct($name, $data, $dataName);        $this->client = di(Client::class);        $this->login();    }    public function __call($name, $arguments)    {        return $this->client->{$name}(...$arguments);    }    /**     * @return mixed|string     * @throws \Psr\SimpleCache\InvalidArgumentException     */    public function login()    {        $token = cache()->get($this->cacheKey);        $this->header['token'] = $token;        if (!$token) {            $userId = 1;            $user = SysUser::query()->where(['user_id' => $userId])->first();            $token = JwtInstance::instance()->encode($user);            $this->header['token'] = $token;            // 设置到缓存             cache()->set($this->cacheKey,  $token, 43200);        }        return $token;    }    /**     * @param array $result     * @return false|string     */    public function pretty(array $result)    {        // 表示成功        $this->assertSame(0, 0);        echo  json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . PHP_EOL;    }}

2、写一个test控制器继承AdminTestCase, 然后写测试用例

知识兔
<?php/** * Created by PhpStorm. * User: phpstorm * Date: 2020/6/9 14:36 * Description: */namespace HyperfTest\Cases\Admin;use App\Service\SysUserService;use HyperfTest\AdminTestCase;use Swoole\Coroutine\Channel;use Hyperf\Utils\Context;class SysUserControllerTest extends AdminTestCase{    // 测试    public function testGet()    {        // $this->assertTrue(true);        $res = $this->client->get('/');        // $this->assertSame(0, $res['code']);        $this->pretty($res);    }    /**     * 后台用户列表     * 执行命令:composer test -- --filter testGetSysUserList --group adminUser     *     * @group adminUser     */    public function testGetSysUserList()    {        $params = [            'username' => '',            'page' => 1,            'limit' => 20        ];        $result = $this->get('/admin/sys/user/list', $params, $this->header);        $this->pretty($result);    }}
  • 点击testGetSysUserList方法左边的绿色三角号:

    教你进行phpstorm hyperf单元测试配置-phpstorm
  • 或者可以在项目的跟目录下直接使用命令:

    composer test -- --filter testGetSysUserList --group adminUser
  • 执行结果:

    教你进行phpstorm hyperf单元测试配置-phpstorm

3、如果hyperf开启协程、phpunit就无法使用,需要使用hyperf框架自带的co-phpunit,所以需要修改phpstorm配置

知识兔

第一步:打开phpstorm->settings->languages & Frameworks->PHP->CLI Interpreter

教你进行phpstorm hyperf单元测试配置-phpstorm

教你进行phpstorm hyperf单元测试配置-phpstorm

教你进行phpstorm hyperf单元测试配置-phpstorm

教你进行phpstorm hyperf单元测试配置-phpstorm
配置完点击【OK】或者【Apply】

第二步:映射项目目录

教你进行phpstorm hyperf单元测试配置-phpstorm
点击【OK】

第三步:配置 co-phpunit命令

打开phpstorm->settings->languages & Frameworks->PHP->Test Frameworks

教你进行phpstorm hyperf单元测试配置-phpstorm

教你进行phpstorm hyperf单元测试配置-phpstorm

教你进行phpstorm hyperf单元测试配置-phpstorm
如图所示配置,点击【OK】或者 【Apply】保存

然后就可以愉快的hyperf 单元调试啦。

以上就是教你进行phpstorm hyperf单元测试配置的知识。速戳>>知识兔学习精品课!