mock(UpdateUserRole::class, function (MockInterface $mock) { $mock->shouldReceive('execute') ->once() ->with(Mockery::type(User::class), ['admin']); }); $dto = new ProvisionUserDTO( name: 'Admin User', email: 'admin@example.com', password: 'password', role: 'admin' ); $action = new ProvisionNewUser($mockUpdateUserRole); $user = $action->execute($dto); expect($user)->toBeInstanceOf(User::class) ->and($user->name)->toBe('Admin User') ->and($user->email)->toBe('admin@example.com'); Event::assertDispatched(UserWasProvisioned::class); });