Файл .env.testing игнорируется при запуске тестов phpunit для приложения laravel - PullRequest
1 голос
/ 14 июня 2019

NB. Я обращался к другим аналогичным вопросам, но все они решили очистить кеш, установить APP_ENV в xml и / или создать .env.testing.


Версия Laravel : "laravel/framework": "5.8.*",

У меня есть стандартный .env файл с

APP_ENV=local
DB_CONNECTION=mysql

Я клонировал стандартный .env файл и сохранил как .env.testing, затем изменил на

APP_ENV=testing
DB_CONNECTION=mongodb

Из консоли, внутри корня проекта, я пытаюсь запустить тест, используя

php artisan config:cache && vendor/bin/phpunit

Проблема в том, что Laravel / PHPUnit по-прежнему использует файл .env вместо ожидаемого .env.testing. Это доказательство

TypeError: Аргумент 1, передаваемый Jenssegers \ Mongodb \ Query \ Builder :: __ construct (), должен быть экземпляром Jenssegers \ Mongodb \ Connection, заданным экземпляром Illuminate \ Database \ MySqlConnection,

Это фактический phpunit.xml файл конфигурации

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>

        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <php>
        <server name="APP_ENV" value="testing"/>
        <server name="BCRYPT_ROUNDS" value="4"/>
        <server name="CACHE_DRIVER" value="array"/>
        <server name="MAIL_DRIVER" value="array"/>
        <server name="QUEUE_CONNECTION" value="sync"/>
        <server name="SESSION_DRIVER" value="array"/>
    </php>
</phpunit>

Итак, прошу предложить отладку и исправление

1 Ответ

2 голосов
/ 14 июня 2019

Я обнаружил эту проблему: https://github.com/sebastianbergmann/phpunit/issues/2353

Поэтому я попытался изменить эту часть файла .xml, чтобы вызвать мои настройки.

Работает.обратите внимание, что все строки теперь с добавлением force="true"

    <server name="APP_ENV" value="testing"  force="true"/>
    <server name="BCRYPT_ROUNDS" value="4" force="true"/>
    <server name="CACHE_DRIVER" value="array" force="true"/>
    <server name="MAIL_DRIVER" value="array" force="true"/>
    <server name="QUEUE_CONNECTION" value="sync" force="true"/>
    <server name="DB_CONNECTION" value="mongodb_testing" force="true"/>
    <server name="SESSION_DRIVER" value="array" force="true"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...