Laravel 5 console (artisan) command unit tests

I have done this before as follows - my console command returns a json response:

public function getConsoleResponse()
{
    $kernel = $this->app->make(Illuminate\Contracts\Console\Kernel::class);
    $status = $kernel->handle(
        $input = new Symfony\Component\Console\Input\ArrayInput([
            'command' => 'test:command', // put your command name here
        ]),
        $output = new Symfony\Component\Console\Output\BufferedOutput
    );

    return json_decode($output->fetch(), true);
}

So if you want to put this in it's own command tester class, or as a function within TestCase etc... up to you.


use Illuminate\Support\Facades\Artisan;
use Symfony\Component\Console\Output\BufferedOutput;

$output = new BufferedOutput();

Artisan::call('passport:client', [
    '--password' => true,
    '--name' => 'Temp Client',
    '--no-interaction' => true,
], $output);

$stringOutput = $output->fetch();