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

Vous apprendre à configurer le test unitaire phpstorm hyperf

藏色散人
Libérer: 2020-07-23 13:26:30
avant
5589 Les gens l'ont consulté

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;
    }
}
Copier après la connexion

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);
    }
}
Copier après la connexion
  • 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
    Copier après la connexion
  • 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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal