带phpunit的测试命令symfony

带phpunit的测试命令symfony,php,symfony,phpunit,symfony-3.2,Php,Symfony,Phpunit,Symfony 3.2,我使用symfony3.2创建一些基本命令,定期生成一些新闻稿 当我想用phpunit5.5.4测试symfony命令时,我遇到了一些问题。 它从一开始就失败了: /** * @param InputInterface $input * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output)

我使用symfony3.2创建一些基本命令,定期生成一些新闻稿 当我想用phpunit5.5.4测试symfony命令时,我遇到了一些问题。 它从一开始就失败了:

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     */
    protected function execute(InputInterface $input, OutputInterface $output){

        $output->writeln("<info>Script start</info>");
        //...
        $output->writeln("<info>done</info>");
     }
我会一步一步地跟进,但就我而言,我会:

Error: Call to a member function writeln() on string

MyBundle/Command/MyCommand.php:197
vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:262
vendor/symfony/symfony/src/Symfony/Component/Console/Tester/CommandTester.php:84
MyBundle/Command/MyCommandTest.php:34
commandTester似乎没有在MyCommand的execute方法中放入正确的参数。 我想知道这是否是CommandTesterClass的问题

这就是为什么我在这里,与你们分享,并一起找到一些解决方案

提前感谢

方法“getDisplay()”返回一个字符串,您可以从Api文档中看到: 将该字符串赋给$output变量。
我想您需要的是“getOutput()”

谢谢您的快速回复。我尝试了GetOutput方法,但问题是一样的。我不认为这是MyCommandTest的问题。当从控制台运行时,您的命令可以工作吗?你能从MyCommand.php中提供198行和197行吗?是的,就是这样。我重写了我使用的某个commandtester变量。这就是为什么我会犯这个错误。谢谢你的帮助,很抱歉给你添麻烦好的,我发现了问题。在MyCommand类中,我使用两个同名变量。一个用于获取模板,另一个用于输出接口。在我得到模板后,我调用writeln来显示“done”,但来自错误的类。重命名变量后,就完成了。抱歉给你添麻烦了
Error: Call to a member function writeln() on string

MyBundle/Command/MyCommand.php:197
vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:262
vendor/symfony/symfony/src/Symfony/Component/Console/Tester/CommandTester.php:84
MyBundle/Command/MyCommandTest.php:34