如何在不安装完整框架的情况下测试自定义 Laravel 控制台命令?

Posted

技术标签:

【中文标题】如何在不安装完整框架的情况下测试自定义 Laravel 控制台命令?【英文标题】:How to test a custom Laravel console command without of installing full framework? 【发布时间】:2020-08-28 19:15:32 【问题描述】:

我正在开发一个自定义 Laravel 控制台命令,该命令使用 composer 和 packagist 进行分发。

所以,这个包没有安装完整的 laravel 框架。 取而代之的是,该软件包使用 illuminate/consoleilluminate/support 等单独的软件包。 这个包给了我代码完成,但我不能使用高级 laravel 测试的可能性,比如:

$this->artisan('question')->expectsQuestion()

因为我的测试是从基本的 phpunit TestCase 而不是 laravel 的 TestCase 扩展而来的。 因为Illuminate\Foundation\Testing\TestCase 需要实现提供引导应用程序的createApplication() 方法。

但我没有安装应用程序,所以无法实现此方法。

如果我没有安装完整的框架,如何创建Illuminate\Foundation\Application

【问题讨论】:

【参考方案1】:

确保您的测试类正在扩展 Laravel\Lumen\Testing\TestCase

然后把这个方法加进去:

    /**
     * Creates the application.
     *
     * @return \Laravel\Lumen\Application
     */
    public function createApplication()
    
        return require __DIR__.'/../bootstrap/app.php';
    

【讨论】:

以上是关于如何在不安装完整框架的情况下测试自定义 Laravel 控制台命令?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不安装 Zend 框架的情况下使用 Zend 库

(如何)我可以在不安装完整的 boost 库的情况下使用 boost::spirit X3 吗?

Testflight 如何在不触发完整审查的情况下更新构建?

带有或不带有主机应用程序的单元测试自定义 iOS 框架

Wix - 在安装/升级期间,自定义操作的条件在不应该的情况下解析为False

如何在不点击的情况下从 Chrome 自定义标签中捕获 URL?