Во время выполнения теста laravel phpunit я получаю сообщение об ошибке «Вызов функции-члена connection () on null» в строке Model.php 1249 - PullRequest
0 голосов
/ 29 апреля 2019

Я запускаю тестовый сценарий laravel phpunit, получаю сообщение об ошибке при подключении к БД. БД подключена успешно. Но,

«Вызов функции-члена connection () on null» - не удалось открыть сервер подключения к базе данных. Пожалуйста, обновите настройки конфигурации.

Я все это сделал правильно. Найти ниже детали:

"php" : ">=7.1.3",
"laravel/lumen-framework": "5.8.*",
"phpunit/phpunit" : "^7.0",
"phpunit/php-invoker" : "*",
"phpunit/dbunit" : "^4.0",

1 Ответ

0 голосов
/ 29 апреля 2019

Было бы немного догадаться, не увидев вашу phpunit.xml конфигурацию, но я подозреваю, что вам нужно указать соединение для тестирования.

Если вы проверите файл php unit, у вас должно быть несколько значений, как показано ниже в вашем свойстве php. Установка DB_CONNECTION на sqlite и DB_DATABASE на :memory: - это быстрый и легкий способ настройки вашей тестовой БД.

    <php>
        <server name="APP_ENV" value="testing"/>
        <server name="BCRYPT_ROUNDS" value="4"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>
        <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.xml, вам нужно проверить файл config/database.php и убедиться, что соединение, соответствующее вашему DB_CONNECTION, имеет разумную конфигурацию.

Значения по умолчанию для sqlite должны нормально работать и следующие:

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

Надеюсь, это поможет.

...