mockery-pdo).Carbon::setTestNow() for timestamp mocking, which could clash with existing time-mocking strategies (e.g., PestPHP, Carbon’s built-in testing tools).mockery-pdo is pre-release, risking breaking changes or missing features (e.g., prepared statements, error handling).Model::observers, Model::booted).DB::raw())?mockery-pdo stabilizes or changes API?fake(), Laravel’s DatabaseMocker, or custom mocking?? placeholders)?DatabaseTransactions or RefreshDatabase with mocks for faster feedback.mockery-pdo to a specific alpha version (e.g., dev-alpha).Carbon::setTestNow(); conflicts may arise if tests already mock time (e.g., PestPHP).composer require mpyw/laravel-database-mock mpyw/mockery-pdo:dev-alpha --dev
phpunit.xml:
<php>
<env name="MOCKERY" value="1"/>
<autoLoad>
<class>Mockery</class>
</autoLoad>
</php>
DatabaseMigrations with DBMock in test setup:
use Mpyw\DatabaseMock\DBMock;
public function setUp(): void
{
parent::setUp();
DBMock::mockPdo(); // Global mock
}
$pdo = DBMock::mockPdo();
$pdo->shouldSelect('SELECT * FROM users WHERE id = ?', [1])
->shouldFetchAllReturns([['id' => 1, 'name' => 'John']]);
$pdos = DBMock::mockEachPdo();
$pdos->writer()->shouldInsert('...')->andReturn(1);
mockery-pdo may change API without notice.How can I help you explore Laravel packages today?