Maison >développement back-end >tutoriel php >Comment faire des tests unitaires avec PHP ?
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.
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
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 { // ... }
编写测试方法
每个测试方法都以 "test" 开头,后面跟着要测试的功能的名称:
public function testAddNumbers() { $result = someFunction(1, 2); $this->assertEquals(3, $result); }
assertEquals
方法断言两个值相等。
运行测试
要运行测试,请使用 PHPUnit 命令:
vendor/bin/phpunit
实战案例:测试字符串工具类
考虑一个名为 StringUtils
的辅助类,它提供一个 ucfirst
class StringUtilsTest extends PHPUnit\Framework\TestCase { public function testUcfirst() { $string = 'hello world'; $result = StringUtils::ucfirst($string); $this->assertEquals('Hello world', $result); } }
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')); } }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éeStringUtils
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!