Laravel php工匠服务不尊重环境标志
我正在做一个拉威尔的项目,并试图整合拉威尔的童子军。为了使用dusk进行测试,我创建了一个.env.dusk.local环境文件,用于测试。但是当我尝试运行Laravel php工匠服务不尊重环境标志,php,laravel,testing,laravel-dusk,Php,Laravel,Testing,Laravel Dusk,我正在做一个拉威尔的项目,并试图整合拉威尔的童子军。为了使用dusk进行测试,我创建了一个.env.dusk.local环境文件,用于测试。但是当我尝试运行phpartisanserve--env=dusk.local时,它只运行默认的.env文件。另外,所有其他.env文件都不起作用 我正在使用Laravel8.15.0。 我还尝试清除配置缓存,但没有任何更改 我现在没有主意了,希望有人能帮我。如果你看到laravel Dash文档,你可以看到你没有必要这样做,你的单独的Dash env文件会
phpartisanserve--env=dusk.local
时,它只运行默认的.env文件。另外,所有其他.env文件都不起作用
我正在使用Laravel8.15.0。
我还尝试清除配置缓存,但没有任何更改
我现在没有主意了,希望有人能帮我。如果你看到laravel Dash文档,你可以看到你没有必要这样做,你的单独的Dash env文件会替换原始文件&一旦测试完成,它会自动恢复 运行测试时,Dusk将备份.env文件,并将Dusk环境重命名为.env。测试完成后,将恢复.env文件
如果它仍然不起作用 借助于
vlucas/phpdotenv
的方法load(),您可以手动设置env
谢谢。我做了一点测试,我发现我所有的其他测试都失败了,因为望远镜坏了,即使当我禁用望远镜时,我也犯了这个错误。所以我从引导配置文件中删除了望远镜并重新安装了它。现在它以正确的方式工作。
<?php
namespace Tests\Browser;
use App\Models\User;
use Laravel\Dusk\Chrome;
use Tests\DuskTestCase;
class ExampleTest extends DuskTestCase
{
private function setEnv(){
$env_name = "dusk.local";
if (isset($env_name)) {
// Immutability refers to if Dotenv is allowed to overwrite existing environment variables. If you want Dotenv to overwrite existing environment variables, use createMutable instead of createImmutable(from vlucas/phpdotenv repo)
$dotenv = \Dotenv\Dotenv::createImmutable(base_path(), '.env.'.$env_name);
try {
$dotenv->load();
} catch (\Dotenv\Exception\InvalidPathException $e) {
$e->getTraceAsString();
}
}
}
public function testBasicExample()
{
$this->setEnv();
}
}