如何在Laravel 5.1 TestCase中访问.env中的值

时间:2015-07-01 21:28:26

标签: testing laravel-5

在Laravel 5.1 TestCase中,baseUrl是硬编码的。我想根据我在.env中设置的值来设置它。

如何访问TestCase类中的.env变量?

6 个答案:

答案 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');