我正在为 Laravel Artisan 控制台命令编写一个非常基本的测试,如下所示:
$this->artisan("my-command", ["--some-option" => "some-value"])
->expectsOutput("the expected output");
Run Code Online (Sandbox Code Playgroud)
测试没有通过。我真的很麻烦,因为“预期输出”正是手动执行时命令输出的内容。
但没关系,我只需要检查通过自动化测试执行时命令输出的实际情况,对吧?但是等等,我该怎么做呢?
我尝试了以下方法:
$output = new BufferedConsoleOutput();
Artisan::call("my-command", ["--some-option", "some-value"], $output);
// dd($output->fetch()
$this->assertTrue($output->fetch() === "the expected output");
Run Code Online (Sandbox Code Playgroud)
但 $output->fetch() 似乎总是空的。
简而言之:如何在测试上下文中打印 Laravel 命令的实际输出?