2017-06-05 79 views
2

我有一些问题,让Laravel加载我的测试用例正确的.env文件。 我使用PHPUnit的与phpunit.xml以下VAR集:Laravel PHPUnit加载.env.testing文件

<?xml version="1.0" encoding="UTF-8"?> 
    <phpunit backupGlobals="false" 
    backupStaticAttributes="false" 
    bootstrap="bootstrap/autoload.php" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    processIsolation="false" 
    stopOnFailure="false"> 
    <testsuites> 
     <testsuite name="Application Test Suite"> 
      <directory suffix="Test.php">./tests</directory> 
     </testsuite> 
    </testsuites> 
    <filter> 
     <whitelist processUncoveredFilesFromWhitelist="true"> 
      <directory suffix=".php">./app</directory> 
      <exclude> 
       <file>./app/Http/routes.php</file> 
      </exclude> 
     </whitelist> 
    </filter> 
    <php> 
     <env name="APP_ENV" value="testing"/> 
     <env name="DB_CONNECTION" value="sqlite"/> 
     <env name="CACHE_DRIVER" value="array"/> 
     <env name="SESSION_DRIVER" value="array"/> 
     <env name="QUEUE_DRIVER" value="sync"/> 
    </php> 
</phpunit> 

在我.env.testing文件我有:

APP_ENV=testing 
DB_CONNECTION=sqlite 

,我有他的联系下,配置设置/ database.php:

'sqlite' => [ 
    'driver' => 'sqlite', 
    'database' => ':memory:', 
    'prefix' => '' 
] 

它只是不加载.env.testing文件。如果我这样做,我TestCase.php:

dd(env('APP_ENV')); 

我还是从我.ENV文件

我也尝试使用得到“发展”:

$app->loadEnvironmentFrom('.env.testing'); 

像线程建议here

有没有人有什么想法可能是错的?

+0

您使用的是什么版本的Laravel? –

+0

@RossWilson我正在使用版本5.2 – Bisgaard

+0

你能分享你的完整phpunit.xml文件吗? – Sandeesh

回答

0

根据documentation for 5.2您应该为您设置env变量phpunit.xml

所以设置你的数据库连接的SQLite你应该增加:

<env name="DB_CONNECTION" value="sqlite"/> 
<env name="DB_DATABASE" value=":memory:"/> 

<php></php>标签内。

希望这会有所帮助!

+0

这不起作用。 它仍然从.env文件中获取DB_CONNECTION。 – Bisgaard

+0

@Bisgaard我已经用我可以尝试的其他东西更新了我的答案。 –

+0

它仍然无法正常工作。它试图使用我的.env文件中的配置。 – Bisgaard