Maison > développement back-end > tutoriel php > Comment faire des tests unitaires avec PHP ?

Comment faire des tests unitaires avec PHP ?

WBOY
Libérer: 2024-04-19 11:33:02
original
502 Les gens l'ont consulté

Les tests unitaires vérifient les plus petits composants du logiciel (tels que les fonctions, les méthodes), PHP peut être testé unitaire via le framework PHPUnit. Installez d'abord PHPUnit, puis créez une classe de test (étendue à partir de TestCase), puis écrivez une méthode de test commençant par "test" et utilisez assertEquals pour affirmer que deux valeurs sont égales. Dans un cas pratique, StringUtilsTest.php teste la méthode ucfirst() de la classe StringUtils ; les simulations sont utilisées pour isoler le code, par exemple pour simuler les dépendances d'une base de données. L'exemple de code montre comment utiliser PHPUnit pour tester la méthode HttpRequest::get(), créer une version fictive de la dépendance via un objet fictif, définir la valeur de retour fictive et vérifier l'appel de la méthode de service.

如何使用 PHP 进行单元测试?

Tests unitaires avec PHP

Les tests unitaires sont une technique de test logiciel qui examine le plus petit composant indépendant (unité) d'un logiciel - une fonction, une méthode ou une classe.

Installer PHPUnit

PHPUnit est un framework de tests unitaires PHP populaire. Pour l'installer, exécutez la commande Composer suivante :

composer require --dev phpunit/phpunit
Copier après la connexion

Créer des classes de test

Chaque classe de test est nommée avec le suffixe "Test" et s'étend de la classe PHPUnitFrameworkTestCase : Écrit par PHPUnitFrameworkTestCase 类:

class SomeClassTest extends PHPUnit\Framework\TestCase
{
    // ...
}
Copier après la connexion

编写测试方法

每个测试方法都以 "test" 开头,后面跟着要测试的功能的名称:

public function testAddNumbers()
{
    $result = someFunction(1, 2);
    $this->assertEquals(3, $result);
}
Copier après la connexion

assertEquals 方法断言两个值相等。

运行测试

要运行测试,请使用 PHPUnit 命令:

vendor/bin/phpunit
Copier après la connexion

实战案例:测试字符串工具类

考虑一个名为 StringUtils 的辅助类,它提供一个 ucfirst

class StringUtilsTest extends PHPUnit\Framework\TestCase
{
    public function testUcfirst()
    {
        $string = 'hello world';
        $result = StringUtils::ucfirst($string);
        $this->assertEquals('Hello world', $result);
    }
}
Copier après la connexion

Méthodes de test

Chaque méthode de test commence par "test" suivi du nom de la fonctionnalité à tester :

class HttpServiceTest extends TestCase
{
    public function testGetRequest()
    {
        $request = $this->getMockBuilder(HttpRequest::class)
            ->onlyMethods(['get'])
            ->getMock();

        $request->method('get')
            ->with('name')
            ->willReturn('John Doe');

        $service = new HttpService($request);

        $this->assertEquals('John Doe', $service->getRequest('name'));
    }
}
Copier après la connexion
La méthode assertEquals affirme que deux valeurs sont égales.

Exécuter des tests

Pour exécuter des tests, utilisez la commande PHPUnit : rrreee

Exemple pratique : tester la classe des utilitaires de chaîne

🎜🎜Considérons une classe d'assistance appelée StringUtils qui fournit un ucfirst pour mettre en majuscule la première lettre d'une chaîne. Nous pouvons écrire un test unitaire pour tester cette approche : 🎜🎜🎜StringUtilsTest.php🎜🎜rrreee🎜🎜Utilisation de mocks🎜🎜🎜Les Mocks vous permettent de simuler le comportement de dépendances externes pour isoler votre code dans les tests unitaires. Par exemple, si vous testez une classe qui s'appuie sur une base de données, vous pouvez utiliser une simulation pour simuler la base de données sans réellement l'interroger. 🎜🎜🎜Exemple de code : tester la méthode getRequest() à l'aide de PHPUnit🎜🎜rrreee🎜Cet exemple montre comment utiliser un objet fictif pour créer une version simulée d'une dépendance, comment définir des valeurs de retour fictives et comment vérifier les appels de méthode à un service. 🎜

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:php.cn
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