如何模拟 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 是从我们试图避免的数据库模式中获取属性列表。