Мне нужно высмеять Laravel's Eloquent \ Model с Mockery, и это довольно сложно, потому что использует статические методы.Mocking Illuminate Database Eloquent Model
Я решил эту проблему со следующим кодом, но мне интересно, есть ли лучший/более умный способ сделать это.
<?php
use Ekrembk\Repositories\EloquentPostRepository;
class EloquentPostRepositoryTest extends TestCase {
public function __construct()
{
$this->mockEloquent = Mockery::mock('alias:Ekrembk\Post');
}
public function tearDown()
{
Mockery::close();
}
public function testTumuMethoduEloquenttenAldigiCollectioniDonduruyor()
{
$eloquentReturn = 'fake return';
$this->mockEloquent->shouldReceive('all')
->once()
->andReturn($eloquentDongu);
$repo = new EloquentPostRepository($this->mockEloquent);
$allPosts = $repo->all();
$this->assertEquals($eloquentReturn, $allPosts);
}
}
Это умный способ решить эту проблему. Благодаря! – ekrembk
сделал быстрое редактирование в методе тестирования '$ mockModel = Mockery :: mock ('\ Ekrmbk \ Post')' ... иначе вы не можете $ mockModel-> shouldReceive – awei