我最近将一个5.3版本的项目升级到了5.4版本,看起来一切都很好。
今天我开始实现Dusk,但是在运行示例测试时遇到了一个问题
☁ footy-finance [5.4] ⚡ php artisan dusk
PHPUnit 6.0.0 by Sebastian Bergmann and contributors.
E 1 / 1 (100%)
Time: 162 ms, Memory: 6.00MB
There was 1 error:
1) Tests\Browser\ExampleTest::testBasicExample
ReflectionException: Class config does not exist
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Container/Container.php:565
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:105
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:263
/Users/owen/Sites/footy-finance/vendor/laravel/dusk/src/TestCase.php:203
/Users/owen/Sites/footy-finance/vendor/laravel/dusk/src/TestCase.php:40
我已经看过TestCase.php
的第40行和它的
public function baseUrl()
{
return config('app.url');
}
所以它看起来确实和全局config
助手有关,有人有什么想法吗?
我在跑
- PHP 7.0.14语言
- Laravel/框架5.4.8
- 拉拉威尔/黄昏1.0.5
完整的composer.lock可以在https://gist.github.com/OwenMelbz/c05172b33f6eb4483e37a56469b53722上看到
祝你们好运,你们有主意了!
干杯:)
9条答案
按热度按时间vulvrdjw1#
我在日志中有此错误
我的问题是,在.env文件中,我以以下方式设置了一个配置变量:
请注意空格。当我将其更改为以下内容时:
问题解决了
siv3szwd2#
此问题与.env文件App_Name有关
在原始文件中是这样写的〉〉〉
APP_NAME=Application Name
就像这样
APP_NAME="Application Name"
0yg35tkg3#
在我的案例中,这个解决方案很有效:
**1)**删除
bootstrap/cache
文件夹的所有内容**2)**运行
composer dump
命令9udxz4iz4#
对于任何其他有过这个问题的人。
我更喜欢在composer文件中设置稳定,它安装了PHPUnit 6。
这是“使稳定的今天”-因此它安装在 composer 更新。
降级到PHPUnit 5解决了这个问题-所以今天开始的时机不好。
xienkqul5#
我只是遇到了同样的问题,在我的情况下,.env是所有干净的,没有未 Package 的空白空间。
在编写/调试测试用例时,如果在该测试中使用
setup()
方法,而忘记将parent::setup()
作为该函数中的第一条语句调用,则也会出现此错误消息。我发现了非常有用的信息here,当你收到这个错误消息时,还会发生什么。
l0oc07j26#
我也遇到过这个问题。对我来说,这是由于在dataProvider方法中调用
config()
函数引起的。在createApplication()
方法初始化应用程序并填充DI容器之前,DataProvider被调用。因此config()
失败,因为helper函数中的app('config')
调用无法从容器中解析config
类。djmepvbi7#
我已经很晚了,但是对于任何在Laravel的单元测试中遇到同样问题并且上面的解决方案都不起作用的人,你可以看看我的解决方案,看看这是否会有帮助。
在我的例子中,我试图调用一个方法来删除Redis数据库中所有的测试键,这个方法是在类的
tearDown
方法中调用的,之所以会出现这个错误,是因为在实际的tearDown
代码执行之前调用了父构造函数,这就是我出现这个错误的原因。而不是这个......
换成这个...
在这种情况下,类'还没有完全销毁,Laravel的
config
方法将被相应地调用。xpcnnkqh8#
我今天在Lumen应用程序中遇到了这个问题。经过一些调查和试验后,我发现这是因为在PHPSorm中,它将
--no-configuration
选项添加到了phpunit
命令上,因为我没有在IDE中为项目配置PHPUnit设置。我通过点击“Run〉Edit Configurations”,然后在“Defaults〉PHPUnit”下点击“Use alternative configuration file:”选项最右边的小按钮,并将"Default configuration file:“设置为项目
phpunit.xml
的完整路径,纠正了这一错误。希望这对你有帮助!
iyr7buue9#
我看到这个错误后,按照一些不可靠的安装说明,为第三方模块,其中说,注册一个服务提供商在
bootstrap/app.php
这导致
$this->app['config']
生成错误BindingResolutionException: Target class [config] does not exist.
我通过将其放入
config/app.php
(它所属的位置)来修复它: