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>
Итак, прошу предложить отладку и исправление