【问题标题】:Override helpers in Laravel 5 with PHPUnit使用 PHPUnit 覆盖 Laravel 5 中的助手
【发布时间】:2018-05-20 08:44:33
【问题描述】:

我一直按照此处提供的建议覆盖我的route,创建我自己的helpers.php 并将其加载到引导程序中。它在浏览器中可以正常工作,但在 PHPUnit 中效果不佳:

PHP Fatal error:  Cannot redeclare route() (previously declared in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:707) in /var/www/app/Http/helpers.php on line 25

似乎 PHPUnit 正在调用供应商自动加载而不是 phpunit.xml 中设置的引导程序,我不知道如何覆盖它。

这是我在 Laravel 的 helpers.php 中抛出异常时得到的调用堆栈

#0 /var/www/vendor/composer/autoload_real.php(66): require()
#1 /var/www/vendor/composer/autoload_real.php(56): composerRequirefaa86f5c74caea0c3ebf4fa6247e01ed('f0906e6318348a7...', '/var/www/vendor...')
#2 /var/www/vendor/autoload.php(7): ComposerAutoloaderInitfaa86f5c74caea0c3ebf4fa6247e01ed::getLoader()
#3 /var/www/vendor/phpunit/phpunit/phpunit(51): require('/var/www/vendor...')
#4 {main}
  thrown in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 699

只有我无法控制的元素。

编辑

我在composer.json 中进行了一些编辑,以加载我的助手。它现在生成vendor/composer/autoload_files.php

<?php

// autoload_files.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    // ...

    'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php',
    '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php',
    '224ac75459a4044275cfdffe33336135' => $baseDir . '/app/Http/helpers.php',
);

基本上,如果我有办法在 Laravel 之前注入我的助手,这可以解决我的问题。

我真的很喜欢调试这个东西,并在我的脑海中听到这首小歌“拥有这些整洁的静态助手真是个好主意”,太棒了。

【问题讨论】:

标签: laravel laravel-5 phpunit composer-php


【解决方案1】:

如果您阅读了问题的编辑,您就会明白在自动加载中注入文件是行不通的。

https://packagist.org/packages/funkjedi/composer-include-files 来解决这个问题。

第一次运行:

composer require funkjedi/composer-include-files

然后更新您的 composer.json extra 字段:

"extra": {
    "include_files": [
        "app/Http/helpers.php"
    ]
}

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2020-05-02
    • 2016-06-19
    • 2014-07-02
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2011-09-16
    相关资源
    最近更新 更多