Как правильно мокнуть коллекцию моделей laravel?
внутри аrtisan команды есть строка внутри конструктора
$this->transfers = TransferCrypto::where(["state" => 1])->with('ref_withdraw.user')->get();
как правильно её мокнуть в unit тесте без фабрик?
мой топорный вариант
$mockQueryBuilder = Mockery::mock('Illuminate\Database\Eloquent\Builder');
$mockQueryBuilder
->shouldReceive('where')
->with(['state' => 1])
->once()
->andReturnSelf();
$mockQueryBuilder
->shouldReceive('with')
->with('ref_withdraw.user')
->once()
->andReturnSelf();
$mockQueryBuilder
->shouldReceive('get')
->once()
->andReturn(collect([
(object)[
'id' => 1, 'state' => 1,
],
(object)['id' => 2, 'state' => 1]
]));
$mockTransferCrypto = Mockery::mock('overload:App\TransferCrypto'); // or 'alias'
$mockTransferCrypto
->shouldReceive('where')
->with(['state' => 1])
->once()
->andReturn($mockQueryBuilder);
как правильно и красиво это зарефакторить?