The following tutorial column will introduce you to the phpstorm hyperf unit test configuration, I hope it will be helpful to friends in need!
<?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. Write a test controller that inherits AdminTestCase, and then writes a test case
<?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); } }
composer test -- --filter testGetSysUserList --group adminUser
##As shown in the picture Display the configuration, click [OK] or [Apply] to save
, and then you can happily debug the hyperf unit.
The above is the detailed content of Teach you how to configure phpstorm hyperf unit test. For more information, please follow other related articles on the PHP Chinese website!