在Laravel 5.1 TestCase中,baseUrl是硬编码的。我想根据我在.env中设置的值来设置它。
如何访问TestCase类中的.env变量?
答案 0 :(得分:4)
在Laravel 5.0 TestCase
中,我可以使用以下函数获取.env变量。
getenv('APP_VARIABLE');
我认为它应该适用于Laravel 5.1以及getenv()
是一个PHP函数。
答案 1 :(得分:2)
我可以确认Christopher Raymonds上面的建议,替换
Dotenv::load call
this $app->loadEnvironmentFrom('.env.testing');
适用于 Laravel 5.4
参见示例:
protected $baseUrl = 'http://localhost';
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
$app->loadEnvironmentFrom('.env');
$this->baseUrl = env('APP_URL', $this->baseUrl);
return $app;
}
答案 2 :(得分:0)
我的 .env 文件中包含此内容:
APP_URL=http://project.dev
然后我修改了 tests / TestCase.php
中的 createApplication 函数/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
$this->baseUrl = env('APP_URL', $this->baseUrl);
$app = require __DIR__ . '/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
return $app;
}
答案 3 :(得分:0)
原来我需要将APP_URL键添加到我的phpunit.xml文件中。
无论出于何种原因,我认为在此过程中也会加载一些.env文件,但显然情况并非如此。
答案 4 :(得分:0)
我修改了test / TestCase.php中的createApplication函数,在bootstrap ...-> bootstrap()之后添加了这行;
$env = new Dotenv\Dotenv(dirname(__DIR__), '../.env');
$env->load();
答案 5 :(得分:0)
在Laravel 5.2中,我用这个替换了Dotenv :: load调用...
$app->loadEnvironmentFrom('.env.testing');