Maison > développement back-end > tutoriel php > Test unitaire avec Guzzle

Test unitaire avec Guzzle

Joseph Gordon-Levitt
Libérer: 2025-02-21 10:08:11
original
832 Les gens l'ont consulté

Unit Testing with Guzzle

Ce didacticiel démontre des tests unitaires avec Guzzle, un client HTTP PHP. Nous explorerons trois approches: des réponses personnalisées fabriquées à la main, en utilisant ServiceClient avec des fichiers de réponse simulés et en mettant un serveur avec des réponses simulées.

Concepts clés:

  • Les tests unitaires efficaces avec GuzzlePHP impliquent la configuration d'un environnement de test à l'aide du compositeur, la configuration du phpunit et la création d'une classe de test.
  • Les réponses personnalisées fabriquées à la main simulent divers scénarios d'API, renforcement les tests unitaires.
  • ServiceClient simplifie la moquerie de la réponse, la configuration du manuel réduisant.
  • La mise en œuvre d'un serveur avec des réponses simulées simule les interactions de serveur réel pour des tests plus intégrés.
  • Les tests approfondis couvrent les en-têtes, le contenu corporel et les appels asynchrones pour des clients de services Web fiables.

Configuration:

Ce tutoriel assume la familiarité avec le compositeur. Le fichier composer.json doit inclure:

{
    "require": {
        "php": ">=5.3.3"
    },
    "require-dev": {
        "phpunit/phpunit": "4.0.*",
        "guzzle/guzzle": "~3.7"
    }
}
Copier après la connexion

Exécutez composer install pour installer des dépendances. Créez un répertoire tests avec bootstrap.php et phpunit.xml.dist:

bootstrap.php:

<?php error_reporting(E_ALL | E_STRICT);
require dirname(__DIR__) . '/vendor/autoload.php';
Copier après la connexion

phpunit.xml.dist:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./bootstrap.php" colors="true">
    <testsuites>
        <testsuite name="Guzzle Tests">
            <directory suffix="Test.php"></directory>
        </testsuite>
    </testsuites>
</phpunit>
Copier après la connexion

Créer SitePointGuzzleTest.php dans le répertoire tests:

<?php
use Guzzle\Tests\GuzzleTestCase;
use Guzzle\Plugin\Mock\MockPlugin;
use Guzzle\Http\Message\Response;
use Guzzle\Http\Client as HttpClient;
use Guzzle\Service\Client as ServiceClient;
use Guzzle\Http\EntityBody;

class SitePointGuzzleTest extends GuzzleTestCase
{
    protected $_client;
}
Copier après la connexion

Méthodes de test:

Le tutoriel détaille ensuite trois approches pour moquer les réponses pour les tests, chacune avec des exemples de code et des assertions. Ces exemples montrent comment tester divers aspects de la réponse, y compris les codes d'état, les en-têtes et la teneur en corps. Le tutoriel aborde également les tests de demande asynchrones et la gestion des exceptions. Les exemples de code complets pour chaque méthode (réponses fabriquées à la main, ServiceClient avec des fichiers simulés et la mise en place d'un serveur) sont fournies dans le code source de l'article d'origine sur GitHub (lien fourni dans l'article d'origine).

Questions fréquemment posées (FAQ):

L'article se termine par une section FAQ complète couvrant les questions communes liées aux tests unitaires avec GuzzlePhp, y compris:

  • Réponses moqueuses en utilisant MockHandler.
  • Intégration de GuzzlePhp avec le phpunit.
  • Gestion des exceptions.
  • tester les demandes asynchrones.
  • Tester les corps et les en-têtes de réponse.
  • Tester les demandes de publication, les téléchargements de fichiers, les redirections et les cookies.

Les FAQ fournies offrent des exemples de code concis illustrant les meilleures pratiques pour chaque scénario. Cela fait de l'article une ressource précieuse pour les développeurs qui cherchent à améliorer leurs compétences de test unitaire de GuzzzlePhp.

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal