Heim >Backend-Entwicklung >PHP-Tutorial >Wie führt man Unit-Tests mit PHP durch?
Unit-Tests prüfen die kleinsten Komponenten der Software (z. B. Funktionen, Methoden). PHP kann über das PHPUnit-Framework einem Unit-Test unterzogen werden. Installieren Sie zuerst PHPUnit, erstellen Sie dann eine Testklasse (erweitert von TestCase), schreiben Sie dann eine Testmethode, die mit „test“ beginnt, und behaupten Sie mit „asserEquals“, dass zwei Werte gleich sind. In einem praktischen Fall testet StringUtilsTest.php die Methode ucfirst() der StringUtils-Klasse; Mocks werden verwendet, um Code zu isolieren, beispielsweise um Datenbankabhängigkeiten zu simulieren. Der Beispielcode zeigt, wie Sie mit PHPUnit die Methode HttpRequest::get() testen, eine Scheinversion der Abhängigkeit über ein Scheinobjekt erstellen, den Scheinrückgabewert festlegen und den Aufruf der Dienstmethode überprüfen.
Unit-Testing mit PHP
Unit-Testing ist eine Softwaretesttechnik, die die kleinste unabhängige Komponente (Einheit) von Software untersucht – eine Funktion, Methode oder Klasse.
PHPUnit installieren
PHPUnit ist ein beliebtes PHP-Unit-Test-Framework. Um es zu installieren, führen Sie den folgenden Composer-Befehl aus:
composer require --dev phpunit/phpunit
Testklassen erstellen
Jede Testklasse wird mit dem Suffix „Test“ benannt und stammt aus der Klasse PHPUnitFrameworkTestCase
: Geschrieben von 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); } }
Testmethoden
Jede Testmethode beginnt mit „test“, gefolgt vom Namen der zu testenden Funktion: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')); } }Die Methode
assertEquals
stellt sicher, dass zwei Werte gleich sind.
Tests ausführen
Um Tests auszuführen, verwenden Sie den PHPUnit-Befehl: rrreee
Praktisches Beispiel: Testen der String Utilities-Klasse
🎜🎜Betrachten Sie eine Hilfsklasse namensStringUtils
, die einen bereitstellt ucfirst
-Methode zum Großschreiben des ersten Buchstabens einer Zeichenfolge. Wir können einen Unit-Test schreiben, um diesen Ansatz zu testen: 🎜🎜🎜StringUtilsTest.php🎜🎜rrreee🎜🎜Mocks verwenden🎜🎜🎜Mocks ermöglichen es Ihnen, das Verhalten externer Abhängigkeiten zu simulieren, um Ihren Code in Unit-Tests zu isolieren. Wenn Sie beispielsweise eine Klasse testen, die auf einer Datenbank basiert, können Sie einen Mock verwenden, um die Datenbank zu simulieren, ohne sie tatsächlich abzufragen. 🎜🎜🎜Beispielcode: Testen der getRequest()-Methode mit PHPUnit🎜🎜rrreee🎜Dieses Beispiel zeigt, wie man mit einem Scheinobjekt eine Scheinversion einer Abhängigkeit erstellt, wie man Scheinrückgabewerte festlegt und wie man Methodenaufrufe überprüft Ein Dienst. 🎜Das obige ist der detaillierte Inhalt vonWie führt man Unit-Tests mit PHP durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!