Пишу unit-тесты для приложения на Laravel. Всё было хорошо, пока не дошло до базы данных. Как только затрагивается какая-то модель в тестируемом методе, возникает ошибка:
Error: Call to a member function connection() on null
// и тут вывод десятка строк из базового класса моделей Laravel
Вероятность, что проблема не в тестируемом методе, стремится к 100 процентам, потому что эта ошибка распространяется на все подобные методы.
Строки из .env с подключением к БД:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=parser
DB_USERNAME=root
DB_PASSWORD=1111
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
<env name="DB_CONNECTION" value="mysql"/>
<env name="DB_HOST" value="127.0.0.1"/>
<env name="DB_PORT" value="3306"/>
<env name="DB_DATABASE" value="parser"/>
<env name="DB_USERNAME" value="root"/>
<env name="DB_PASSWORD" value="1111"/>
</php>
</phpunit>
Что я делал:
1.Поменял класс, который расширяет тест с PHPUnit\Framework\TestCase на Tests\TestCase.
2.Как видно выше, внес env в phpunit.xml. Да, окружение их видит и они выводятся в var_dump().
3.Менял окружение на local (да, кэш чистил).
Результат один и тот же, гугл ничем не помогает, помогите, пожалуйста, не знаю, что и делать.