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

互联网 20-7-23

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

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

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

<?php  declare(strict_types=1); /**  * This file is part of Hyperf.  *  * @link     https://www.hyperf.io  * @document https://doc.hyperf.io  * @contact  group@hyperf.io  * @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方法左边的绿色三角号:

  • 或者可以在项目的跟目录下直接使用命令:

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

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

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

配置完点击【OK】或者【Apply】

第二步:映射项目目录

点击【OK】

第三步:配置 co-phpunit命令

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

如图所示配置,点击【OK】或者 【Apply】保存

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

以上就是教你进行phpstorm hyperf单元测试配置的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: Hyperf
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:PhpStorm设置php版本

相关资讯