• 技术文章 >开发工具 >phpstorm

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

    藏色散人藏色散人2020-07-23 13:26:30转载2137

    下面由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);
        }
    }

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

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

    phpstorm hyperf单元测试配置

    phpstorm hyperf单元测试配置

    phpstorm hyperf单元测试配置

    phpstorm hyperf单元测试配置
    配置完点击【OK】或者【Apply】

    第二步:映射项目目录

    phpstorm hyperf单元测试配置
    点击【OK】

    第三步:配置 co-phpunit命令

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

    phpstorm hyperf单元测试配置

    phpstorm hyperf单元测试配置

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

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

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

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:phpstorm hyperf
    上一篇:PhpStorm设置php版本 下一篇:phpstorm如何修改php版本
    大前端线上培训班

    相关文章推荐

    • phpstorm 如何使用 Xdebug 调试代码• PhpStorm之优雅的调试 Hyperf• 或许你想关闭phpstorm拼音检查?• PhpStorm设置php版本

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网