【问题标题】:Laravel: Disable Artisan console output when running testsLaravel:运行测试时禁用 Artisan 控制台输出
【发布时间】:2018-08-27 01:16:18
【问题描述】:

当运行 PHPUnit 测试以测试 Artisan 命令时,PHPUnit 输出任何控制台 ->info() or ->writeln() 函数调用。

测试不会因此而失败,尽管它很丑。

例子:

看到进度条了吗?我们如何在测试期间禁用输出?

【问题讨论】:

    标签: php laravel testing phpunit


    【解决方案1】:

    想到的一些选项都与命令的详细程度一起操作:

    • call() 中使用--quiet|-q 标志
    • 使用callSilent() 而不是call()(来自测试本身)
    • 从容器中解析命令并将详细程度设置为quiet,然后再使用它:$cmd = resolve(Command::class); $cmd->setVerbosity('quiet'); $cmd->doWork();
    • 制作虚拟命令,扩展您测试过的命令并将详细程度设置为安静 $this->setVerbosity('quiet'); 并显然解决/新建虚拟命令

    最新示例(在一个文件中是):

    class TestCommand extends TestCase {
    
        ...
    
    }
    
    class DummyCommand extends RealCommand {
    
        function __constructor() {
            parent::__construct();
            $this->setVerbosity('quiet');
        }
    
    }
    

    【讨论】:

    • 如果输出来自命令的外部依赖怎么办?而不是命令本身。
    • @AndrewMcLagan 如果您根本不需要输出,只需用ob_start()ob_end_clean() 包围您的call()
    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2016-01-07
    • 2018-07-31
    • 2020-08-03
    • 2022-06-14
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多