Laravel Dusk - Class 配置不存在
Laravel Dusk - Class config does not exist
最近将一个 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/Framework 5.4.8
- Laravel/Dusk 1.0.5
全composer.lock可见https://gist.github.com/OwenMelbz/c05172b33f6eb4483e37a56469b53722
祈祷你们有一些想法!
干杯:)
对于遇到此问题的任何其他人。
我更喜欢 composer 文件中的稳定集,它安装了 PHPUnit 6。
这是 "made stable today" - 因此它是在作曲家更新期间安装的。
降级到 PHPUnit 5 解决了这个问题 - 所以今天开始它的时机不对。
我在日志中有这个错误
Class config does not exist
我的问题是在 .env 文件中我按以下方式设置了配置变量:
APP_NAME=Application Name
注意 space。当我把它改成这个时:
APP_NAME="Application Name"
问题已解决
我今天在 Lumen 应用程序中有这个。经过一些调查和尝试,我发现这是因为在 PHPStorm 中它正在将 --no-configuration
选项添加到 phpunit
命令中,因为我没有为 [=25] 中的项目配置我的 PHPUnit 设置=].
我通过单击“运行 > 编辑配置”,然后在“默认 > PHPUnit”下单击'Use alternative configuration file:' 选项最右侧的小按钮,并将 'Default configuration file:' 设置为项目 phpunit.xml
.
的完整路径
希望对您有所帮助!
问题出在 .env 文件上
App_Name
原文件中是这样写的>>> APP_NAME=应用程序名称
像这样APP_NAME="Application Name"
我也遇到过这个问题。对我来说,这是通过在 dataProvider 方法中调用 config()
函数引起的。 DataProvider 在 createApplication()
方法初始化应用程序并填充 DI 容器之前被调用。因此 config()
失败,因为辅助函数中的 app('config')
调用无法解析容器中的 config
class。
我只是 运行 遇到了同样的问题,在我的例子中,.env 是干净的,没有展开的空白空间。
当 writting/debugging 一个测试用例,在该测试中使用 setup()
方法,忘记调用 parent::setup()
作为该函数中的第一条语句时,也会出现此错误消息。
protected $stuf;
function setup() {
parent::setup();
$this->stuf = 'stuf';
}
我找到了非常有用的信息 here,了解当您收到此错误消息时可能发生的其他情况。
就我而言,此解决方案有效:
1) 删除 bootstrap/cache
文件夹的所有内容
2) 运行 composer dump
命令
我参加聚会已经很晚了,但是对于在 Laravel 的单元测试和上述解决方案的 none 中遇到相同问题的任何人,您可以查看我的并查看如果这可能有帮助。
在我的例子中,当我 运行 单元测试时,我试图调用一个方法来删除我的 Redis 数据库中持久存在的所有测试键。该方法在class的tearDown
方法中被调用。发生错误是因为在执行实际 tearDown
代码之前调用了父构造函数。这就是我遇到错误的原因。
而不是这个……
/**
* tearDown is executed after test stub
*/
protected function tearDown()
{
parent::tearDown();
$this->deleteTestKeys();
}
改成这个...
protected function tearDown()
{
$this->deleteTestKeys();
parent::tearDown();
}
在这种情况下,class' 尚未完全销毁,Laravel 的 config
方法将相应地被调用。
最近将一个 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/Framework 5.4.8
- Laravel/Dusk 1.0.5
全composer.lock可见https://gist.github.com/OwenMelbz/c05172b33f6eb4483e37a56469b53722
祈祷你们有一些想法!
干杯:)
对于遇到此问题的任何其他人。
我更喜欢 composer 文件中的稳定集,它安装了 PHPUnit 6。
这是 "made stable today" - 因此它是在作曲家更新期间安装的。
降级到 PHPUnit 5 解决了这个问题 - 所以今天开始它的时机不对。
我在日志中有这个错误
Class config does not exist
我的问题是在 .env 文件中我按以下方式设置了配置变量:
APP_NAME=Application Name
注意 space。当我把它改成这个时:
APP_NAME="Application Name"
问题已解决
我今天在 Lumen 应用程序中有这个。经过一些调查和尝试,我发现这是因为在 PHPStorm 中它正在将 --no-configuration
选项添加到 phpunit
命令中,因为我没有为 [=25] 中的项目配置我的 PHPUnit 设置=].
我通过单击“运行 > 编辑配置”,然后在“默认 > PHPUnit”下单击'Use alternative configuration file:' 选项最右侧的小按钮,并将 'Default configuration file:' 设置为项目 phpunit.xml
.
希望对您有所帮助!
问题出在 .env 文件上 App_Name
原文件中是这样写的>>> APP_NAME=应用程序名称
像这样APP_NAME="Application Name"
我也遇到过这个问题。对我来说,这是通过在 dataProvider 方法中调用 config()
函数引起的。 DataProvider 在 createApplication()
方法初始化应用程序并填充 DI 容器之前被调用。因此 config()
失败,因为辅助函数中的 app('config')
调用无法解析容器中的 config
class。
我只是 运行 遇到了同样的问题,在我的例子中,.env 是干净的,没有展开的空白空间。
当 writting/debugging 一个测试用例,在该测试中使用 setup()
方法,忘记调用 parent::setup()
作为该函数中的第一条语句时,也会出现此错误消息。
protected $stuf;
function setup() {
parent::setup();
$this->stuf = 'stuf';
}
我找到了非常有用的信息 here,了解当您收到此错误消息时可能发生的其他情况。
就我而言,此解决方案有效:
1) 删除 bootstrap/cache
文件夹的所有内容
2) 运行 composer dump
命令
我参加聚会已经很晚了,但是对于在 Laravel 的单元测试和上述解决方案的 none 中遇到相同问题的任何人,您可以查看我的并查看如果这可能有帮助。
在我的例子中,当我 运行 单元测试时,我试图调用一个方法来删除我的 Redis 数据库中持久存在的所有测试键。该方法在class的tearDown
方法中被调用。发生错误是因为在执行实际 tearDown
代码之前调用了父构造函数。这就是我遇到错误的原因。
而不是这个……
/**
* tearDown is executed after test stub
*/
protected function tearDown()
{
parent::tearDown();
$this->deleteTestKeys();
}
改成这个...
protected function tearDown()
{
$this->deleteTestKeys();
parent::tearDown();
}
在这种情况下,class' 尚未完全销毁,Laravel 的 config
方法将相应地被调用。