I am writing phpunit code for some console command (in laravel 9.x). The command will generate a report like:
2023-05-08 16:14:30 Some Awsome Batch Batch Status : SUCCESS Start Time : 2023-05-08 16:14:26 End Time : 2023-05-08 16:14:27 DryRun: yes Billing month:
In real env, the above text is displayed in green color,
because it was produced by $this->info()
, and $this
is derived from Illuminate\Console\Command
.
Now I am working on phpunit to verify that report, like following:
public function testBadBillingMonth()
{
$cmd = $this->artisan('command:GasLimitedTimePointGrant', [
'--billingMonth' => '20230a'
]);
$cmd->run();
printf("\n=====\n%s\n", $cmd->test->getActualOutput() ); // I got blank here :(
}
My trouble is that, the 'output' catched by phpunit is 'blank', my little green report is gone.
If I use printf
instead of $this->info()
to produce the report,
I woule be able to grab the content of report by $cmd->test->getActualOutput(),
but I can't modify my test target to fit my test code.
And we also use $this->error()
, $this->warn()
respectively.
So can we grab the output made by $this->error()
, $this->warn()
, $this->info()
in phpunit?
Thanks in advance.