Laravel 单元测试 Command
前言
想单元测试一下自己写的Command。发现文档好像没有关于任务调度的单元测试。参考了一些资料,实现了Command的单元测试。
相关的类
1. Composer\Console\Application
2. Symfony\Component\Console\Tester\CommandTester
详细代码
// 实例化Application (Composer\Console\Application)
$app = new Application();
//实例化 你的 Command
// | ----- 可以直接new 一个
// | ----- 也可以通过$this->app->make(LiveCommand::class);
$testedCommand = new LiveCommand();
$testedCommand->setLaravel(app());
$app->add($testedCommand);
// 创建命令测试者
$commandTester = new CommandTester($testedCommand);
// 可以看一下execute方法
// | ---- 如果你有输入值 使用 $commandTester->setInputs([1,2,3]);
// | ---- 如果你的命令绑定了参数 在execute()方法的第一个参数中进行声明:
// | ---- ---- 如‘ make:test {test_id} ’ 参数为['test_id'=>1]
$resultCode = $commandTester->execute(['test_id'=>1]);
// 在这里我是直接打印出了一些结果 可以使用assert...方法去判断结果
dd($resultCode, $commandTester->getDisplay());