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 助手有关,有人有任何想法吗?

我是 运行

全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 方法将相应地被调用。