create(); $file = UploadedFile::fake()->image('avatar.jpg'); $mockReplaceSingleFile = $this->mock(ReplaceSingleFile::class, function (MockInterface $mock) use ($user, $file) { $mock->shouldReceive('execute') ->once() ->with($file, Mockery::on(function (FileDTO $dto) use ($user) { return $dto->modelType === $user->getMorphClass() && $dto->modelId === $user->id && $dto->relationName === 'avatar' && $dto->disk === 'local' && $dto->directory === 'avatars'; })); }); $action = new UpdateUserAvatar($mockReplaceSingleFile); $action->execute($user, $file); });