下面由phpstorm教程欄目給大家介紹phpstorm hyperf單元測試配置,希望對需要的朋友有所幫助!
1、創建一個testCase基類繼承于PHPUnitFrameworkTestCase
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 AppModelSysUser; use AppServiceInstanceJwtInstance; use HyperfTestingClient; use PHPUnitFrameworkTestCase; /** * 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?PsrSimpleCacheInvalidArgumentException ?????*/ ????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 HyperfTestCasesAdmin; use AppServiceSysUserService; use HyperfTestAdminTestCase; use SwooleCoroutineChannel; use HyperfUtilsContext; 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】
立即學習“PHP免費學習筆記(深入)”;
第二步:映射項目目錄
點擊【OK】
第三步:配置 co-phpunit命令
打開phpstorm->settings->languages & Frameworks->PHP->Test Frameworks
如圖所示配置,點擊【OK】或者 【Apply】保存
然后就可以愉快的hyperf ?單元調試啦。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦