在實務情境上,常會有在單一專案程式庫中,存取多個不同資料庫的使用情境,在這種情況下,我們通常會設置多個資料庫連線(Database Connection)設定。
在平常開發使用設很方便,但要做測試時就會發現一些問題:
factory()
時,都是在預設連線資料庫上執行,但若想使用 factory()
建立其他資料庫連線之Model實例時,應該怎麼做?以上問題,就讓我們一一來找解方吧!
首先讓我們假設當前的多重資料連線情境:
MainProject
,在此專案程式庫中,會存取另2個專案程式庫之資料,分別是 SunnyProject
及 MoonProject
SunnyProject
只存取自己的資料庫MoonProject
只存取自己的資料庫Model 的應對方式比較簡單,筆者的經驗是當我們需要在 MainProject
中使用 SunnyProject
的資料模型時,通常我們會從 SunnyProject
複製 Model 檔案到 MainProject
中,並且設定 $connectin
變數:
<?php
namespace App\Models\Sunny;
class User{
protected $connection = 'mysql_sunny';
// 下略
}
之後再搭配後面會介紹的 Migration 應對方式
即可。
這個可能也是許多人想問的,而答案其實也很簡單,幾乎所有的 Database Assertion 函數,都有一個可選參數 $connection
,例如最基本的 assertDatabaseHas
:
$this->assertDatabaseHas($table, array $data, $connection = null)
當第3個參數 $connection
有指定時,PHPUnit 便會到指定的資料庫連線內,去做對應的資料庫驗證動作。
以上就是今天的介紹,下一篇再為大家介紹 Migration 應對方式
!
如果您喜歡這篇文章,歡迎加入追蹤以接收新文章通知 😄