Bis*_*ard 6 php phpunit laravel phpdotenv
我在使Laravel为测试用例加载正确的.env文件时遇到一些问题。我正在使用PHPUnit,并在phpunit.xml中设置了以下变量:
<?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>
Run Code Online (Sandbox Code Playgroud)
在我的.env.testing文件中,我有:
APP_ENV=testing
DB_CONNECTION=sqlite
Run Code Online (Sandbox Code Playgroud)
我在config / database.php下建立了他的连接:
'sqlite' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => ''
]
Run Code Online (Sandbox Code Playgroud)
它只是没有加载.env.testing文件。如果我在TestCase.php中这样做:
dd(env('APP_ENV'));
Run Code Online (Sandbox Code Playgroud)
我仍然从我的.env文件中获得“发展”
我也尝试过使用:
$app->loadEnvironmentFrom('.env.testing');
Run Code Online (Sandbox Code Playgroud)
就像这里的线程中建议的那样
有谁知道可能出什么问题?
小智 7
我的问题非常相似。根本没有读取环境文件 .env.testing。我试图在我的测试文件中随处放置一些 var_dump,一切正常,但即使是 var_dump(env("APP_NAME")) 也是空的。
我想输入一个“php artisan config:clear”,一切都恢复正常了。不确定我做了什么,但它对我有用:)
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |