如何模擬 ActiveRecord
如果要模擬不嘗試連線資料庫的 AR,可以通過以下方式執行此操作(如果使用 PHPUnit):
$post = $this->getMockBuilder('\app\model\Post')
->setMethods(['save', 'attributes'])
->getMock();
$post->method('save')->willReturn(true);
$post->method('attributes')->willReturn([
'id',
'status',
'title',
'description',
'text'
]);
問題是我們需要覆蓋 attributes()
方法,因為預設情況下 ActiveRecord 是從我們試圖避免的資料庫模式中獲取屬性列表。