工匠您好,
測試是軟體開發的一部分。它確保您的應用程式按預期工作。 Laravel 對測試有很好的支持,並且在設計時它就考慮到了測試。它提供了Pest和PHPUnit用於測試。
安裝任何 Laravel 應用程式後,您可以看到 phpunit.xml 已在您的應用程式中可用。預設情況下,應用程式在測試目錄中包含兩個單獨的目錄,一個用於功能,另一個用於單元。單元是應用程式中較小且獨立的部分,而功能用於測試應用程式的較大部分。
在這篇文章中,我們將探討如何使用 PHPUnit 編寫測試以及如何與您的 Laravel 應用程式整合。
為什麼單元測試很重要?
在深入了解細節之前,讓我們快速了解為什麼單元測試很重要:
程式碼品質:測試在遊戲早期發現錯誤,因此不會冒進入生產的風險。
重建信心:測試讓您充滿信心地重構,因為您不擔心破壞功能。
文件:測試充當程式碼行為的活文檔。
協作:它們充當團隊的安全網:它們不允許新的變更破壞現有功能。
在我們開始編寫測試案例之前,請確保您已經安裝了 Laravel 應用程式。
開發環境建置完成:在專案根目錄下建立.env.testing檔案。當您執行 PHPUnit 測試或使用 --env=testing 選項執行 Artisan 命令時,將使用此檔案取代 .env 檔案。
驗證 PHPUnit 設定:檢查專案根目錄中的 phpunit.xml 檔案。此文件為您的 Laravel 應用程式配置 _PHPUnit_。
執行預設測試: Laravel 包含一些範例測試。您可以使用以下命令運行它們:
php artisan test
此指令執行測試目錄中的所有測試。
所以讓我們開始寫您的第一個單元測試
功能:用於測試應用程式的較大區塊,通常涉及 HTTP 請求。
單元: 用來測試各個類別和方法。
讓我們來寫一個簡單的單元測驗:
1。建立測試檔案
使用Artisan產生測試檔:
php artisan make:test SumOfTwoNumberTest --unit
這將建立測試/Unit/SumOfTwoNumberTest.php。
2。編寫測試案例
開啟新建立的測試檔案並新增您的測試邏輯:
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
3。運行測試
使用以下命令執行測試:
php artisan test
您也可以使用 test Artisan 指令來執行測試。此命令提供詳細的測試報告以簡化開發和調試過程。
php artisan make:test SumOfTwoNumberTest --unit
您應該看到一個輸出,指示測試是通過還是失敗。
讓我們為 Laravel 模型方法建立一個單元測試。假設我們有一個 User 模型,其方法為 getFullName:
1。模型方法
將方法加入您的使用者模型:
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
2。建立測驗
產生測試檔:
./vendor/bin/phpunit
編輯測試檔來測試 getFullName 方法:
php artisan test
3。執行測試
運行測試:
public function getFullName(): string { return $this->first_name .' '. $this->last_name; }
如果該方法按預期工作,您應該會看到一條成功訊息。
Laravel 中的功能測試可讓您測試應用程式的較大部分,例如路由、控制器和中介軟體。
讓我們為登入頁面編寫一個範例功能測試。
1。生成功能測試
使用 Artisan 建立新功能測驗:
php artisan make:test UserTest --unit
這將建立測試/Feature/LoginTest.php。
2。編寫測試邏輯
開啟LoginTest.php檔案並加入以下程式碼:
<?php namespace Tests\Unit; use App\Models\User; use PHPUnit\Framework\TestCase; class UserTest extends TestCase { public function test_get_full_name() { $user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $this->assertEquals('John Doe', $user->getFullName()); } }
3。運行功能測試
php artisan test
輸出將顯示登入頁面是否可存取以及使用者是否可以成功登入。
在 Laravel 中編寫單元測試的一些最佳實踐
描述性測試名稱:測試名稱應該可以很好地描述正在測試的內容。
一次測試一件事:每個測試應該只測試一種功能或行為。
使用工廠和播種器:利用 Laravel 的模型工廠和播種器來建立測試資料。
隔離測試:單元測試不應依賴外部服務,例如資料庫或 API。必要時使用模擬和存根。
您可以查看 Laravel 文件以獲取更多詳細資訊。
結論:
Laravel 中的單元和功能測試是維護程式碼品質和確保健全的應用程式行為的強大方法。使用 PHPUnit 編寫和執行測試是一種簡單而有效的方法。透過將測試整合到您的開發過程中,您將創建更可靠、可維護的應用程式。
祝閱讀愉快! !
編碼快樂! !
❤️ ?
以上是使用 Laravel 單元測試建立無錯誤的應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!