【问题标题】:Laravel 4 testing "Command"s?Laravel 4 测试“命令”?
【发布时间】:2014-01-26 05:34:08
【问题描述】:

我已尝试在 Laravel 4 中测试我的命令,因为它们是我系统的重要组成部分,但似乎文档覆盖率太差,以至于它们只解释了控制器和某些模型的基本测试。

在命令中,您可以通过命令行将参数传递给类,它是通过 $this->input 属性接收的,我不知道如何模拟。

每当我尝试为我的命令运行测试时,当它需要“fire”方法中的参数时,我会收到以下错误:

Fatal error: Call to a member function getArgument() on a non-object in /var/www/html/project/vendor/laravel/framework/src/Illuminate/Console/Command.php on line 153

这是合乎逻辑的,没有传递任何参数。有没有办法测试这个功能?...

谢谢

【问题讨论】:

  • 为什么要减去?这是一个有建设性的问题,可以有参考和实例支持,没有可能导致冲突的双重意见,它是一个编程问题。展示我所做的事情是脱离上下文的,因为这个问题非常具体,可以很容易地回答。我认为人们忘记了反对票的用途。

标签: php unit-testing laravel-4


【解决方案1】:

大部分都可以使用 Symfony Command Tester 完成(因为 Command 基于 Symfony 控制台),例如:http://alexandre-salome.fr/blog/Test-your-commands-in-Symfony2。但是,如果您必须调用另一个工匠命令(例如 $this->call('db:seed'); 等),这将开始失败,因为这实际上是 Illuminate\Console\Application 特定的语法。

如果有人对上述情况有解决方案,我很乐意。

【讨论】:

    【解决方案2】:

    我最近发了一篇关于Testing Laravel commands的帖子。

    如果您想要在多个命令中使用代码的特定部分,那么您必须将该部分代码移动到两个命令都可以使用它的位置(事件处理程序、特征、另一个类...),然后在您的命令中引用该代码而不是使用$this->call('db:seed');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 2011-07-21
      • 2019-11-13
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多