快速入門
Laravel 天生就具有測試的基因。事實上,Laravel 預設支援用 PHPUnit 來做測試,並為你的應用程式配置了 phpunit.xml 檔案。框架還提供了一些便利的輔助函數,讓你可以更直覺的測試你的應用程式。
預設情況,你的應用程式 tests
目錄中包含兩個子目錄:Feature
和 Unit
。單元測試是針對你的程式碼中非常少,而且相對獨立的一部分程式碼來進行的測試。實際上,大部分的單元測試都是針對單一方法進行。功能測試是針對大面積程式碼進行的測試,包括多個物件之間的交互,甚至是對 JSON 端點的完整 HTTP 請求。Feature 和
Unit 目錄中都提供一個
ExampleTest.php 測試範例檔。安裝一個新的 Laravel 應用程式之後,在命令列下執行
phpunit
環境
在使用phpunit
進行測試時,Laravel 會根據 phpunit.xml
檔案設定的環境變數自動將環境設為testing
,並將Session 及快取以array
的形式存儲,也就是說在測試時不會持久化任何Session 或快取資料。
你可以隨意創建其它必要的測試環境配置。 testing
環境變數可以在phpunit.xml
檔案中修改,但是在執行測試之前,請確保使用config:clear
Artisan 指令來清除設定資訊的緩存!
此外,你還可以在你的專案根目錄下創建一個.env.testing
文件,在執行單元測試,或使用帶有--env=testing
選項的Artisan 指令時, .env
檔案中的變數會被這個檔案覆寫。
定義並執行測試
#可以使用Artisan 指令make:test
建立一個測試使用案例:
// 在 Feature 目录下创建一个测试类...php artisan make:test UserTest// 在 Unit 目录下创建一个测试类...php artisan make:test UserTest --unit
測試類別產生之後,你就可以像平常使用PHPUnit 一樣來定義測試方法。要執行測試只需要在終端機上執行phpunit
指令即可:
<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase{ /** * 一个基本的测试示例。 * * @return void */ public function testBasicTest() { $this->assertTrue(true); } }
{note} 如果要在你的測試類別中定義自己的
setUp
/tearDown
方法,請確保呼叫了父類別中的parent::setUp()
/parent::tearDown()
方法。