简体   繁体   English

在运行 laravel phpunit 测试用例时,我在 Model.php 第 1249 行收到错误“调用成员函数 connection() on null”

[英]While running laravel phpunit testcase , i'm getting an error "Call to a member function connection() on null" in Model.php line 1249

I'm running laravel phpunit testcase, getting error in DB connection.我正在运行 laravel phpunit 测试用例,在数据库连接中出错。 DB connected successfully.数据库连接成功。 But,但,

"Call to a member function connection() on null" - Could not open to database connection server. “在 null 上调用成员函数 connection()”- 无法打开数据库连接服务器。 Please update the configuration settings.请更新配置设置。

I did all those things properly.我正确地做了所有这些事情。 Find below details:查找以下详细信息:

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

This would be a bit of a guess without seeing your phpunit.xml configuration but I suspect you need to specify a connection for testing.如果没有看到您的phpunit.xml配置,这可能有点猜测,但我怀疑您需要指定一个连接进行测试。

If you check your php unit file you should have some values like below in your php property.如果你检查你的 php 单元文件,你应该在你的php属性中有如下一些值。 Setting the DB_CONNECTION to sqlite and DB_DATABASE to :memory: is a fast and light-weight way to configure your testing DB.将 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>

If you do have similar values in your phpunit.xml file then you will need to check your config/database.php file and ensure the connection matching your DB_CONNECTION has a sensible configuration.如果您的phpunit.xml文件中确实有类似的值,那么您将需要检查您的config/database.php文件并确保与您的 DB_CONNECTION 匹配的连接具有合理的配置。

The default values for sqlite should work fine and are as follows: sqlite的默认值应该可以正常工作,如下所示:

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

Hope this helps.希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Laravel PHPUnit 在 null 上调用成员函数 connection() - Laravel PHPUnit Call to a member function connection() on null Laravel 5:Model.php中的MassAssignmentException - Laravel 5 : MassAssignmentException in Model.php Model.php第225行中的Laravel 5.4MassAssignmentException:_token - Laravel 5.4MassAssignmentException in Model.php line 225: _token Model.php 第 750 行中的 FatalErrorException:未找到 Class Laravel5 - FatalErrorException in Model.php line 750: Class not found Laravel5 Laravel 5.3 ErrorException在Model.php第2709行 - Laravel 5.3 ErrorException in Model.php line 2709 Model.php第827行中的Laravel FatalErrorException:找不到类 - Laravel FatalErrorException in Model.php line 827: Class not found 优化后 Laravel 错误:清除:调用 null 上的成员 function 连接() - Laravel error after optimize:clear : Call to a member function connection() on null Laravel注册错误:AuthenticatesAndRegistersUsers.php中的FatalErrorException第41行:在null上调用成员函数validator() - Laravel Registration Error: FatalErrorException in AuthenticatesAndRegistersUsers.php line 41: Call to a member function validator() on null 在 null 上调用成员函数 addEagerConstraints() 在 laravel 6 上出现此错误 - Call to a member function addEagerConstraints() on null getting this error on laravel 6 在空laravel上调用成员函数connection() - call to a member function connection() on null laravel
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM