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());

本文分享了如何在Laravel框架下对自定义的Console Command进行单元测试的方法。通过实例化ComposerConsoleApplication和SymfonyComponentConsoleTesterCommandTester类,详细介绍了设置测试环境、执行命令并获取结果的过程。
807

被折叠的 条评论
为什么被折叠?



