* * * * *
[TOC]
## 簡介
Laravel 天生就具有測試的基因。事實上,Laravel 默認就支持用 PHPUnit 來做測試,并為你的應用程序配置好了?`phpunit.xml`?文件。框架還提供了一些便利的輔助函數,讓你可以更直觀的測試應用程序。
默認在你應用的?`tests`?目錄下包含了兩個子目錄:?`Feature`?和?`Unit`。單元測試是針對你代碼中相對獨立而且非常少的一部分代碼來進行測試。實際上,大多數單元測試可能都是針對某一個方法來進行的。功能測試是針對你代碼中大部分的代碼來進行測試,包括幾個對象的相互作用,甚至是一個完整的 HTTP 請求 JSON 實例。
在?`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`?文件中的變量會被這個文件覆蓋。
## 定義并運行測試
可以使用?`make:test`?Artisan 命令創建一個測試用例:
~~~
// 在 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
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
~~~
> {note} 如果要在你的測試類中定義自己的?`setUp`?方法,請確保調用了?`parent::setUp()`?方法。
- 前言
- 翻譯說明
- 發行說明
- 升級指南
- 貢獻導引
- 入門指南
- 安裝
- 配置信息
- 文件夾結構
- Homestead
- Valet
- 部署
- 核心架構
- 請求周期
- 服務容器
- 服務提供者
- Facades
- Contracts
- 基礎功能
- 路由
- 中間件
- CSRF 保護
- 控制器
- 請求
- 響應
- 視圖
- URL
- Session
- 表單驗證
- 錯誤
- 日志
- 前端開發
- Blade 模板
- 本地化
- 前端指南
- 編輯資源 Mix
- 安全相關
- 用戶認證
- Passport OAuth 認證
- 用戶授權
- 加密解密
- 哈希
- 重置密碼
- 綜合話題
- Artisan 命令行
- 廣播系統
- 緩存系統
- 集合
- 事件系統
- 文件存儲
- 輔助函數
- 郵件發送
- 消息通知
- 擴展包開發
- 隊列
- 任務調度
- 數據庫
- 快速入門
- 查詢構造器
- 分頁
- 數據庫遷移
- 數據填充
- Redis
- Eloquent ORM
- 快速入門
- 模型關聯
- Eloquent 集合
- 修改器
- API 資源
- 序列化
- 測試相關
- 快速入門
- HTTP 測試
- 瀏覽器測試 Dusk
- 數據庫測試
- 測試模擬器
- 官方擴展包
- Cashier 交易工具包
- Envoy 部署工具
- Horizon
- Scout 全文搜索
- Socialite 社會化登錄