Laravel允许您指定替代环境文件,绕过标准
文件。这对于测试特别有用,其中专用.env
文件可以隔离测试配置。虽然并非总是必要的,但此功能通过利用.env.testing
>环境变量来提供灵活性。APP_ENV
>
>文件,例如:.env.demo
>
# Create .env.demo cp .env .env.demo echo "\nEXAMPLE_SETTING=demo" >> .env.demo # Use the `demo` env php artisan tinker --env=demo # Or set APP_ENV APP_ENV=demo php artisan tinkerlaravel将优先考虑
.env.demo
。
.env
>使用而不是
.env.demo
.env
.env.testing
>对于Phpunit测试,默认值是使用.env
。 但是,这可能导致与本地开发设置(尤其是有关数据库)的冲突。 phpunit.xml
提供数据库配置,使用.env.testing
提供了一种更清洁的方法。
设置phpunit.xml
APP_ENV
进行“测试”,促使Laravel在功能测试期间加载.env.testing
:
<env name="APP_ENV" value="testing"></env>
创建.env.testing
并添加特定于测试的设置:
cp .env .env.testing echo "\nEXAMPLE_SETTING=testing" >> .env.testing
验证.env.testing
已加载,将其添加到tests/Feature
>中的测试中:
/** * A basic test example. */ public function test_the_application_returns_a_successful_response(): void { logger('Which environment file is Laravel using?', [ 'file' => $this->app->environmentFile() ]); $response = $this->get('/'); $response->assertStatus(200); }
运行phpunit
应该登录:
<code>[2024-05-24 00:22:42] testing.DEBUG: Which environment file is Laravel using? {"file":".env.testing"}</code>
是否要版本控制.env.testing
(或使用示例.env.testing.example
)是团队的决定。 对于CI,建议使用测试数据库等设置系统级环境变量。 有关更详细的环境配置,请参阅官方的Laravel文档。 要更深入地了解框架的实现,请检查Laravel源代码中的setEnvironmentFilePath
和checkForSpecificEnvironmentFile
方法。
以上是用其他环境文件配置Laravel的详细内容。更多信息请关注PHP中文网其他相关文章!