Maison  >  Article  >  développement back-end  >  Middleware Laravel : implémenter des tests automatisés et une vérification de la couverture du code

Middleware Laravel : implémenter des tests automatisés et une vérification de la couverture du code

王林
王林original
2023-07-28 13:25:14972parcourir

Middleware Laravel : mettre en œuvre des tests automatisés et une inspection de la couverture du code

Introduction :
Les tests automatisés sont une partie essentielle du processus de développement logiciel. Ils peuvent nous aider à découvrir les problèmes dans le code en temps opportun et à améliorer la qualité du logiciel. Dans le framework Laravel, nous pouvons implémenter des tests automatisés et des vérifications de couverture de code via un middleware. Cet article explique comment utiliser le middleware Laravel pour les tests automatisés et la vérification de la couverture du code, et fournit des exemples de code pertinents.

1. Qu'est-ce que le middleware Laravel ?
Le middleware est un concept central du framework Laravel qui peut exécuter des fonctions n'importe où entre la requête entrant dans l'application et la réponse renvoyée au client. Le middleware est un mécanisme qui filtre les requêtes et les réponses, les modifie ou les traite avant que la requête n'atteigne la route ou après que la réponse soit renvoyée au client. Diverses fonctions peuvent être implémentées à l'aide d'un middleware, telles que l'authentification de routage, la prévention de la falsification de requêtes intersites, etc. Lors des tests automatisés et de la vérification de la couverture du code, nous pouvons utiliser un middleware pour détecter la couverture du code dans les requêtes et les réponses.

2. Tests automatisés
L'utilisation du middleware Laravel pour les tests automatisés peut nous aider à détecter les problèmes dans le code à temps et à garantir l'exactitude du code. Ci-dessous, nous utiliserons un exemple pour présenter comment utiliser le middleware Laravel pour les tests automatisés.

  1. Créer un middleware
    Tout d'abord, nous devons créer un middleware pour les tests automatisés. Utilisez la commande Artisan de Laravel pour créer un middleware :
php artisan make:middleware CodeCoverageMiddleware

Cette commande générera un fichier de classe middleware nommé CodeCoverageMiddleware dans le répertoire app/Http/Middleware. app/Http/Middleware目录下生成一个名为CodeCoverageMiddleware的中间件类文件。

  1. 编辑CodeCoverageMiddleware中间件
    在生成的CodeCoverageMiddleware类文件中,我们可以重写handle方法来实现自动化测试:
namespace AppHttpMiddleware;

use IlluminateSupportFacadesApp;
use IlluminateHttpRequest;

class CodeCoverageMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        if (App::environment('testing')) {
            // 运行代码覆盖率检查
        }

        return $next($request);
    }
}

在上述代码中,我们通过判断应用程序是否处于testing环境下来确定是否运行代码覆盖率检查。

  1. 注册中间件
    完成中间件的编辑后,我们需要将其注册到app/Http/Kernel.php文件中的$middleware数组中:
protected $middleware = [
    // ...
    AppHttpMiddlewareCodeCoverageMiddleware::class,
];

通过以上步骤,我们已经成功创建并注册了一个用于自动化测试的中间件。现在,当应用程序处于testing环境下时,每个请求都会经过这个中间件。

三、代码覆盖率检查
使用Laravel中间件进行代码覆盖率检查可以帮助我们了解哪些代码被测试覆盖到了,以及哪些代码没有被覆盖到。这有助于我们确定需要进行更多测试的代码区域,提高代码的可靠性。下面我们将以一个示例来介绍如何使用Laravel中间件进行代码覆盖率检查。

  1. 安装覆盖率检查工具
    首先,我们需要安装phpunit/php-code-coverage包来实现代码覆盖率检查:
composer require --dev phpunit/php-code-coverage
  1. 编辑CodeCoverageMiddleware中间件
    接下来,我们需要在CodeCoverageMiddleware中间件的handle方法中实现代码覆盖率检查:
namespace AppHttpMiddleware;

use IlluminateSupportFacadesApp;
use IlluminateHttpRequest;
use SebastianBergmannCodeCoverageFilter;
use SebastianBergmannCodeCoverageCodeCoverage;
use SebastianBergmannCodeCoverageReportHTMLFacade as CoverageReporter;

class CodeCoverageMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        if (App::environment('testing')) {
            $filter = new Filter();
            $filter->addFileToWhitelist(base_path());

            $coverage = new CodeCoverage(null, $filter);
            $coverage->start('laravel');

            register_shutdown_function(function () use ($coverage) {
                $coverage->stop();

                CoverageReporter::factory([
                    'target' => storage_path('coverage'),
                ])->process($coverage);
            });
        }

        return $next($request);
    }
}

在上述代码中,我们通过使用phpunit/php-code-coverage包提供的类来实现代码覆盖率检查。在每个请求到来时,我们通过start方法开始代码覆盖率检查,并在应用程序结束时通过stop方法结束检查。然后,我们使用CoverageReporter来生成代码覆盖率报告。

  1. 查看代码覆盖率报告
    完成代码覆盖率检查后,我们可以通过打开浏览器并访问http://your-app-url/storage/coverage/index.html
    1. Modifier le middleware CodeCoverageMiddleware
    Dans le fichier de classe CodeCoverageMiddleware généré, nous pouvons remplacer la méthode handle Pour implémenter tests automatisés :


    rrreee

    Dans le code ci-dessus, nous déterminons s'il convient d'exécuter la vérification de la couverture du code en déterminant si l'application se trouve dans l'environnement testing.

      Enregistrer le middleware

      Après avoir terminé l'édition du middleware, nous devons l'enregistrer dans $middlewareapp/Http/Kernel.php /code>Dans le tableau :

      🎜rrreee🎜Grâce aux étapes ci-dessus, nous avons réussi à créer et à enregistrer un middleware pour les tests automatisés. Désormais, lorsque l'application est dans un environnement de test, chaque requête passera par ce middleware. 🎜🎜3. Vérification de la couverture du code🎜L'utilisation du middleware Laravel pour la vérification de la couverture du code peut nous aider à comprendre quels codes sont couverts par les tests et quels codes ne le sont pas. Cela nous aide à identifier les zones du code qui nécessitent davantage de tests et à améliorer la fiabilité du code. Ci-dessous, nous utiliserons un exemple pour présenter comment utiliser le middleware Laravel pour vérifier la couverture de code. 🎜🎜🎜Installer l'outil de vérification de la couverture🎜Tout d'abord, nous devons installer le package phpunit/php-code-coverage pour implémenter la vérification de la couverture du code : 🎜🎜rrreee
        🎜EditCodeCoverageMiddleware middleware 🎜Ensuite, nous devons implémenter la vérification de la couverture de code dans la méthode handle du middleware CodeCoverageMiddleware : 🎜🎜rrreee🎜Dans le code ci-dessus , nous implémentons la vérification de la couverture du code en utilisant les classes fournies par le package phpunit/php-code-coverage. Lorsque chaque requête arrive, nous démarrons la vérification de la couverture du code via la méthode start, et terminons la vérification via la méthode stop à la fin de l'application. Nous utilisons ensuite CoverageReporter pour générer des rapports de couverture de code. 🎜
          🎜Voir le rapport de couverture du code🎜Après avoir terminé la vérification de la couverture du code, nous pouvons le faire en ouvrant le navigateur et en visitant http://your-app-url/storage/coverage/ index.html pour afficher le rapport de couverture du code. 🎜🎜🎜Conclusion : 🎜Le middleware Laravel nous offre un moyen très pratique de mettre en œuvre des tests automatisés et une vérification de la couverture de code. En créant des classes middleware et en les enregistrant dans l'application, nous pouvons exécuter automatiquement des vérifications de couverture de code dans l'environnement de test et afficher les rapports associés. Cela nous aide à trouver rapidement les problèmes dans le code et à garantir la qualité du code. 🎜🎜En fait, le middleware Laravel peut non seulement être utilisé pour des tests automatisés et la vérification de la couverture de code, mais peut également être utilisé pour implémenter de nombreuses autres fonctions, telles que la journalisation, le filtrage des requêtes, etc. Il est très important que les développeurs maîtrisent l’utilisation du middleware. 🎜🎜J'espère que cet article pourra aider les lecteurs à mieux comprendre le middleware Laravel et comment l'utiliser pour mettre en œuvre des tests automatisés et une vérification de la couverture de code. Chacun peut utiliser le middleware de manière flexible en fonction de ses propres besoins et des conditions réelles pour améliorer l'efficacité du développement logiciel et la qualité du code. 🎜

    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:
    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