在PHP專案開發中,單元測試是一項很重要的任務。 PHPUnit和Mockery是兩個相當流行的PHP單元測試框架,其中PHPUnit是一個被廣泛使用的單元測試工具,而Mockery則是一個專注於提供統一而簡潔的API以創建和管理對象Mock的對像模擬工具。
透過使用PHPUnit和Mockery,開發人員可以快速且有效率地進行單元測試,以確保程式碼庫的正確性和穩定性。本文將介紹如何使用PHPUnit和Mockery進行單元測試,讓您能夠輕鬆進行此類測試。
composer require --dev phpunit/phpunit mockery/mockery
這個命令將把PHPUnit和Mockery作為開發依賴安裝在您的專案中,以便於執行單元測試。
在您的專案資料夾中,建立一個名為「CalculatorTest.php」的文件,並在其中編寫以下程式碼:
use PHPUnitFrameworkTestCase; use MyAppCalculator; class CalculatorTest extends TestCase { public function testAddition() { $calculator = new Calculator(); $result = $calculator->add(2, 2); $this->assertEquals(4, $result); } }
在這個測試案例中,我們首先實例化一個Calculator對象,然後使用add()方法執行加法運算。最後,我們使用assertEquals()方法來驗證運算結果是否為我們所期望的值。
假設我們正在編寫一個名為「UserService」的類,用於處理使用者相關的業務邏輯。這個類別依賴另一個名為「UserRepository」的類,用於存取使用者資料儲存。我們可以使用Mockery來模擬這個依賴項,以便在測試中驗證UserService的運作正常。
在您的專案資料夾中,建立一個名為「UserServiceTest.php」的文件,並在其中編寫以下程式碼:
use PHPUnitFrameworkTestCase; use MyAppUserService; use MyAppUserRepository; use MockeryAdapterPhpunitMockeryPHPUnitIntegration; class UserServiceTest extends TestCase { use MockeryPHPUnitIntegration; public function testCreateUser() { $repo = Mockery::mock(UserRepository::class); $repo->shouldReceive('create') ->once() ->with(['name' => 'Alice']); $service = new UserService($repo); $service->createUser('Alice'); } }
在這個測試案例中,我們使用「Mockery ::mock()”函數來建立一個模擬的UserRepository物件。然後,我們透過「shouldReceive()」方法來期望這個模擬物件的「create()」方法將會被呼叫一次,傳遞一個名為「'Alice'」的陣列作為參數。最後,我們實例化了一個UserService對象,並透過它的「createUser()」方法來呼叫模擬對象的「create()」方法。
./vendor/bin/phpunit
這個命令將自動查找專案中的所有測試案例,並運行它們。如果所有測試都通過了,PHPUnit將輸出一條訊息來確認這一點。
如果您只想執行特定的測試案例,可以在命令後面指定測試檔案或測試方法。例如,要執行「CalculatorTest.php」中的testAddition()方法,可以執行以下命令:
./vendor/bin/phpunit tests/CalculatorTest.php --filter testAddition
透過這些簡單的步驟,您就可以使用PHPUnit和Mockery來進行PHP單元測試了。一個正確和完整的測試套件,將有助於確保PHP專案程式碼庫的品質和穩定性,並有利於持續改進和持續發展。
以上是php如何使用PHPUnit和Mockery進行單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!