我有一個類,getPaginatedQuery
,即作爲其第一個步驟,立即克隆它的一個參數的方法:測試該克隆一個嘲笑參數
public function getPaginatedQuery(Builder $query, $limit = null, $offset = null)
{
$constrainedQuery = clone $query;
...
}
的Builder
對象的克隆是通過其__clone
魔術方法來完成的。
我被傳遞一個嘲笑Builder
實例$query
試圖單元測試這種方法:
$query = m::mock('Illuminate\Database\Eloquent\Builder');
$relation->getPaginatedQuery($query, 2, 1);
我測試的失敗,一個致命的錯誤:__clone method called on non-object
。我已經盡我$query
對象定義__clone
的期望,但我得到了同樣的錯誤:
$query = m::mock('Illuminate\Database\Eloquent\Builder');
$clonedQuery = m::mock('Illuminate\Database\Eloquent\Builder');
$query->shouldReceive('__clone')->andReturn($clonedQuery);
$relation->getPaginatedQuery($query, 2, 1);
我在做什麼錯在這裏?