Laravel 8多PHPUnit测试执行报错求助:createApplication方法异常
解决Laravel 8批量PHPUnit测试时
createApplication()报错的问题 问题根源
我刚碰到过一模一样的问题!你看到的Call to a member function make() on bool错误,核心原因出在CreatesApplication trait里的createApplication()方法用了require_once加载bootstrap/app.php:
$app = require_once __DIR__.'/../bootstrap/app.php';
第一次执行测试时,require_once会加载文件并返回Laravel应用实例,一切正常。但第二次及之后的测试调用这个方法时,因为文件已经被加载过,require_once会直接返回布尔值true,而不是重新执行文件生成新的应用实例。这时候$app变成了true(布尔值),调用$app->make()自然就会触发报错。
解决方案
把require_once改成普通的require,让每次测试都重新加载bootstrap/app.php并创建新的应用实例:
// 替换原代码 $app = require_once __DIR__.'/../bootstrap/app.php'; // 修改为 $app = require __DIR__.'/../bootstrap/app.php';
这样每次测试运行时,都会重新执行bootstrap/app.php里的代码,生成全新的Laravel应用实例,就不会出现布尔值调用方法的错误了。
验证
修改后再运行你的测试文件:
php artisan test ./tests/feature/DashboardTest.php
两个测试应该都能正常通过,不会再出现报错。
内容的提问来源于stack exchange,提问作者Reteptt
相关产品推荐
相关产品推荐

