janmarek/mockista
Mockista is a lightweight mocking library for PHP/Laravel that helps you create and configure test doubles quickly. Define expectations, stub methods, and verify calls with a simple, fluent API to keep unit tests fast, readable, and maintainable.
getMockBuilder() verbosity. Its type-safe expectations (e.g., when()->thenReturn()) improve test reliability by enforcing contracts, which is critical for TDD/BDD workflows in Laravel applications.HasFactory) may require custom adapters for monolithic apps.createMock(), Mockery, or partialMock().DatabaseMigrations or RefreshDatabase traits.bindWhen() or AppServiceProvider mocking.Http::fake()).when()->then() vs. expects()->willReturn()).__call) require manual workarounds.thenCallback()) may conflict with Laravel’s event system or queues.Mockista\Eloquent)?getMockBuilder() in Laravel apps?createMock()) with better Laravel integration?Mockery or createMock().RefreshDatabase or DatabaseTransactions).MockBuilder).UserRepository interface).Mockista\Eloquent).<!-- phpunit.xml -->
<php>
<autoload>
<classmap prefix="Mockista"/>
</autoload>
</php>
use Mockista\Mockista;
beforeEach(function () {
$this->mockista = new Mockista();
});
| Feature | Mockista Support | Laravel Workaround |
|---|---|---|
| Interface Mocking | ✅ Yes | None needed |
| Class Mocking | ✅ Yes | Use Mockista::partialMock() |
| Static Methods | ❌ No | Manual __callStatic stubbing |
| Eloquent Models | ❌ No | Create a mock interface + adapter |
| Service Container | ❌ No | Use Laravel’s createMock() for bindings |
| PestPHP Integration | ⚠️ Partial | Custom traits/helpers |
| Mockery Interop | ❌ No | None (incompatible APIs) |
getMockBuilder() with Mockista’s Mockista::mock().// Before (PHPUnit)
$mock = $this->getMockBuilder(UserRepository::class)
->disableOriginalConstructor()
->onlyMethods(['find'])
->getMock();
$mock->method('find')->willReturn($user);
// After (Mockista)
$mock = Mockista::mock(UserRepository::class)
->when('find', $userId)->thenReturn($user);
Illuminate\Contracts or Eloquent.// Custom Eloquent mock adapter
$mock = Mockista::mock(User::class)
->partialMock()
->when('findOrFail', 1)->thenThrow(new ModelNotFoundException());
verify() like Mockery).assertObjectHasAttribute() or assertMethodCalled().How can I help you explore Laravel packages today?