Mockery - альтернативная библиотека для мокирования, более гибкая чем встроенные PHPUnit mocks:
use Mockery;
$mock = Mockery::mock(UserRepository::class);
$mock->shouldReceive('find')
->with(42)
->once()
->andReturn(new User('John'));
$mock->shouldReceive('save')
->andReturnUsing(fn(User $u) => $u);
// Partial mock
$mock = Mockery::mock(Service::class)->makePartial();
$mock->shouldReceive('externalCall')->andReturn('cached');
Mockery::close(); // в tearDownMockery поддерживает: partial mocks, spy, named mocks, expectation declarations, hamcrest matchers.