Maison  >  Article  >  outils de développement  >  Vous apprendre à configurer le test unitaire phpstorm hyperf

Vous apprendre à configurer le test unitaire phpstorm hyperf

藏色散人
藏色散人avant
2020-07-23 13:26:165518parcourir

Ce qui suit est une introduction à la configuration du test unitaire phpstorm hyperf de la colonne du tutoriel phpstorm, j'espère que cela sera utile aux amis dans le besoin !

Vous apprendre à configurer le test unitaire phpstorm hyperf

1. Créez une classe de base testCase héritée de PHPUnitFrameworkTestCase

conseils : placez le jeton après une connexion réussie dans le cache, ensuite Les requêtes d'interface secondaire peuvent être récupérées directement à partir du cache.

<?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 = &#39;test_admin_token&#39;;

    // token
    protected $header = [];


    public function __construct($name = null, array $data = [], $dataName = &#39;&#39;)
    {
        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[&#39;token&#39;] = $token;
        if (!$token) {
            $userId = 1;
            $user = SysUser::query()->where([&#39;user_id&#39; => $userId])->first();
            $token = JwtInstance::instance()->encode($user);
            $this->header[&#39;token&#39;] = $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. Écrivez un contrôleur de test qui hérite de AdminTestCase, puis écrivez un scénario de test

<?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(&#39;/&#39;);

        // $this->assertSame(0, $res[&#39;code&#39;]);

        $this->pretty($res);
    }


    /**
     * 后台用户列表
     * 执行命令:composer test -- --filter testGetSysUserList --group adminUser
     *
     * @group adminUser
     */
    public function testGetSysUserList()
    {
        $params = [
            &#39;username&#39; => &#39;&#39;,
            &#39;page&#39; => 1,
            &#39;limit&#39; => 20
        ];
        $result = $this->get(&#39;/admin/sys/user/list&#39;, $params, $this->header);

        $this->pretty($result);
    }
}
  • Cliquez sur le triangle vert à gauche de la méthode testGetSysUserList :

    phpstorm hyperf单元测试配置
  • Ou vous pouvez utiliser la commande directement dans le répertoire du projet :

    composer test -- --filter testGetSysUserList --group adminUser
  • Résultat de l'exécution :

    phpstorm hyperf单元测试配置

3. Si hyperf active les coroutines, phpunit ne peut pas être utilisé. Vous devez utiliser la co-phpunit fournie avec hyperf. framework, vous devez donc modifier la configuration de phpstorm

Première étape : ouvrez phpstorm->settings->langages ​​& Frameworks->PHP->CLI Interpreter

phpstorm hyperf单元测试配置

phpstorm hyperf单元测试配置

phpstorm hyperf单元测试配置

phpstorm hyperf单元测试配置
Après la configuration, cliquez sur [OK] ou [Appliquer]

Étape 2 : Mappez le répertoire du projet

phpstorm hyperf单元测试配置
Cliquez sur [OK]

Étape 3 : Configurez le commande co-phpunit

Ouvrir phpstorm-> ;settings->langues & Frameworks->PHP->Test Frameworks

phpstorm hyperf单元测试配置

phpstorm hyperf单元测试配置

phpstorm hyperf单元测试配置
comme indiqué sur l'image. Affichez la configuration, cliquez sur [OK] ou [Appliquer] pour enregistrer

et vous pourrez ensuite déboguer l'unité hyperf.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer