Laravel dusk 不工作 .env.dusk.local

作者:编程家 分类: laravel 时间:2025-10-13

Laravel dusk 不工作 .env.dusk.local

Laravel dusk 是 Laravel 框架的一个强大的端到端测试工具,可以帮助开发人员编写和运行浏览器测试。然而,有时候我们可能会遇到一个问题,即 Laravel dusk 在使用 .env.dusk.local 文件时无法正常工作。

问题描述

当我们在项目根目录下创建了一个名为 .env.dusk.local 的文件,并且在其中设置了适当的环境变量时,Laravel dusk 应该能够正确地读取这些环境变量。然而,有时候我们可能会发现 Laravel dusk 并没有使用 .env.dusk.local 文件中的环境变量,而是使用了默认的 .env 文件中的变量。

原因分析

这个问题通常是由于 Laravel dusk 默认会在测试开始之前加载 .env 文件,而忽略了 .env.dusk.local 文件。这意味着,当我们运行 Laravel dusk 时,它会读取默认的 .env 文件中的环境变量,而不会读取 .env.dusk.local 文件中的变量。

解决方案

为了让 Laravel dusk 正确地读取 .env.dusk.local 文件中的环境变量,我们需要进行一些配置。

首先,我们需要确保在运行 Laravel dusk 之前,我们已经在 .env 文件中设置了正确的环境变量。这是因为 Laravel dusk 在运行之前会加载 .env 文件,我们需要确保其中的变量是正确的。

接下来,我们需要修改 Laravel dusk 的配置文件。打开项目根目录下的 dusk.php 文件,找到 `DuskServiceProvider` 类,并在其 `register` 方法中添加以下代码:

php

public function register()

{

if ($this->app->environment('dusk')) {

$this->app->configure('dusk');

}

}

这段代码将会确保 Laravel dusk 在运行时加载 .env.dusk.local 文件中的环境变量。

最后,在终端中运行 Laravel dusk 之前,我们需要设置一个环境变量,告诉 Laravel dusk 我们正在运行测试。可以通过以下命令设置环境变量:

shell

export APP_ENV=dusk

现在,当我们运行 Laravel dusk 时,它将会正确地读取 .env.dusk.local 文件中的环境变量,并使用其中的值进行测试。

案例代码

以下是一个简单的示例代码,演示了如何在 Laravel dusk 中正确地使用 .env.dusk.local 文件中的环境变量:

php

namespace Tests\Browser;

use Laravel\Dusk\Browser;

use Tests\DuskTestCase;

class ExampleTest extends DuskTestCase

{

/**

* A basic browser test example.

*

* @return void

*/

public function testBasicExample()

{

$this->browse(function (Browser $browser) {

$browser->visit('/')

->assertSee(env('DUSK_ENV_VARIABLE'));

});

}

}

在上面的示例代码中,我们使用了 `env` 函数来获取 .env.dusk.local 文件中的环境变量,并在测试中进行断言。

通过按照上述步骤进行配置,我们可以解决 Laravel dusk 无法正常工作时 .env.dusk.local 文件的问题。确保在运行 Laravel dusk 之前设置正确的环境变量,并修改 dusk.php 文件以正确加载 .env.dusk.local 文件中的变量,可以确保 Laravel dusk 在测试中使用正确的环境变量。