單元測試檢查軟體的最小組成部分(如函數、方法),PHP 可透過 PHPUnit 框架進行單元測試。首先安裝 PHPUnit,然後建立測試類別(擴充自 TestCase),再編寫以 "test" 開頭的測試方法,使用 assertEquals 斷言兩個值相等。在實戰案例中,StringUtilsTest.php 測試 StringUtils 類別的方法 ucfirst();mocks 用於隔離程式碼,例如模擬資料庫相依性。範例程式碼展示如何使用 PHPUnit 測試 HttpRequest::get() 方法,透過模擬物件建立依賴項的模擬版本、設定模擬回傳值和驗證服務方法呼叫。
使用PHP 進行單元測試
單元測試是一種軟體測試技術,它檢查軟體的最小獨立構成部分(單元)——函數、方法或類別。
安裝 PHPUnit
PHPUnit 是一個流行的 PHP 單元測試框架。要安裝它,請執行以下Composer 命令:
composer require --dev phpunit/phpunit
建立測試類別
每個測試類別都以"Test" 後綴命名,並擴展自 PHPUnit\Framework\TestCase
類別:
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
方法來將字串的首字母大寫。我們可以寫一個單元測試來檢驗這個方法:
StringUtilsTest.php
class StringUtilsTest extends PHPUnit\Framework\TestCase { public function testUcfirst() { $string = 'hello world'; $result = StringUtils::ucfirst($string); $this->assertEquals('Hello world', $result); } }
使用mocks
##Mocks 允許您模擬外部依賴項的行為,以在單元測試中隔離您的程式碼。例如,如果您要測試依賴資料庫的類,則可以使用一個 mock 來模擬資料庫,而無需實際查詢。範例程式碼:使用PHPUnit 測試getRequest() 方法
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')); } }此範例展示如何使用模擬物件建立依賴項的模擬版本,如何設定模擬傳回值以及如何驗證服務的方法呼叫。
以上是如何使用 PHP 進行單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!