您好,欢迎访问一九零五行业门户网

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

下面由phpstorm教程栏目给大家介绍phpstorm hyperf单元测试配置,希望对需要的朋友有所帮助!
1、创建一个testcase基类继承于phpunit\framework\testcasetips:把登录成功后的token放到缓存, 下次接口请求可以直接从缓存取。
<?phpdeclare(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单元测试配置的详细内容。
其它类似信息

推荐信息