簡體   English   中英

Laravel PHPUnit 加載 .env.testing 文件

[英]Laravel PHPUnit loading .env.testing file

我在讓 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>

在我的 .env.testing 文件中,我有:

APP_ENV=testing
DB_CONNECTION=sqlite

我在 config/database.php 下設置了他的連接:

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

它只是沒有加載 .env.testing 文件。 如果我在我的 TestCase.php 中這樣做:

dd(env('APP_ENV'));

我仍然從我的 .env 文件中獲得“開發”

我也試過使用:

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

就像這里的線程中建議的那樣

有沒有人知道什么可能是錯的?

我的問題非常相似。 根本沒有讀取環境文件 .env.testing。 我試圖在我的測試文件中隨處放置一些 var_dump,一切正常,但即使是 var_dump(env("APP_NAME")) 也是空的。

我想輸入一個“php artisan config:clear”,一切都恢復正常了。 不確定我做了什么,但它對我有用:)

根據5.2文檔,您應該在phpunit.xml設置env變量。

因此,要將數據庫連接設置為sqlite,您應該添加:

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

<php></php>標簽內。

希望這可以幫助!

要加載.env.testing文件,您必須使用--env=testing執行 artisan 命令

您是在運行功能測試還是單元測試? 我認為單元測試只應該在模擬上工作,而功能測試可能會持續到數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM