什麼是 Testbench Workbench
Orchestra Testbench 是為測試設計,但搭配 Workbench 使用,可於套件儲存庫內建立小型 Laravel 應用程式並在本機執行。 在補足以package-testing 建立的測試同時,適合用於 UI 確認、路由連通、附 Seeder 的驗證。
設定
1
安裝 Testbench
2
建立 Workbench
- 建立
workbench/目錄結構 - 於
composer.json的autoload-dev加入 Workbench 命名空間 - 於
composer.json的scripts加入 build 用指令
3
Build 並啟動
workbench:install 會一併整備 workbench/ 目錄、autoload-dev 及相關 script。composer.json 會加入以下 script。
以 testbench.yaml 定義開發環境
Workbench 的行為由置於根目錄的testbench.yaml 管理。
環境變數也可透過
testbench.yaml 管理。
workbench 目錄結構
workbench
app
Http
Models
Providers
bootstrap
config
database
factories
migrations
seeders
public
resources
routes
storage
Workbench 提供的主要功能
WorkbenchServiceProvider
建立 Workbench 專用的服務提供者,執行 Demo 用的註冊處理。路由與 Controller
可在workbench/routes/web.php 或 workbench/routes/api.php 放置驗證路由。
Migration 與 Seeder
使用workbench/database/migrations 與 workbench/database/seeders,可以以接近實際運行的資料結構驗證。
啟動服務與 CLI 確認
可透過vendor/bin/testbench 執行 Artisan 指令。
使用 WithWorkbench trait 測試
使用WithWorkbench trait 後,testbench.yaml 的設定也會套用至自動測試。
與測試的搭配
若將 Workbench 作為「手動確認、Demo 用應用程式」、Testbench 的測試程式碼作為「自動驗證」分工,較易操作。- 自動化:於
tests/防止 regression - 手動確認:於
workbench/確認畫面、動線、整合行為
疑難排解
Workbench 無法 build
Workbench 無法 build
請確認
testbench.yaml 的語法與 Provider 設定。YAML 的縮排錯誤可能為原因。路由未被載入
路由未被載入
請確認路由檔案路徑與 WorkbenchServiceProvider 的註冊。確認
testbench.yaml 的 discovers.web 是否為 true。發生資料庫錯誤
發生資料庫錯誤
請確認 Migration 的路徑是否正確。若使用 SQLite,請確認是否包含
create-sqlite-db build 步驟。相關頁面
以 Orchestra Testbench 測試 Laravel 套件
先確認套件測試基礎的建立方式。
套件的版本相容性管理
確認 Laravel 與 Testbench 的對應表及 CI matrix 運行。