原创

laravel command unit

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Tester\CommandTester;
use Tests\TestCase;

class CommandTest extends TestCase
{

public function testHandle()
{
//创建一个console测试应用平台,用来搭载测试的命令
$application = new Application();

//创建待测试的command
$testedCommand = $this->app->make(Command::class);
//设置命令执行需要的laravel依赖
$testedCommand->setLaravel(app());

//添加待测试的command到测试应用上
//同时command 也绑定 application
$application->add($testedCommand);

//实例化命令测试类
$commandTester = new CommandTester($testedCommand);
//命令输入流,对应每次交互需要提供的输入内容
$commandTester->setInputs([
//...
]);
//执行命令
$commandTester->execute(['command' => $testedCommand->getName()]);

//对命令执行结果进行断言测试,主要是依靠正则判断
//$commandTester->getDisplay() 方法可以获取命令执行后的输出结果
$this->assertRegExp("/some reg/", $commandTester->getDisplay());
}
}


正文到此结束
本文目录