我的测试运行正常,并且在没有任何特殊标志的情况下全部变为绿色:
phpunit --configuration /home/vagrant/code/phpunit.xml /home/vagrant/code/tests
启用进程隔离后,测试将失败:
phpunit --configuration /home/vagrant/code/phpunit.xml /home/vagrant/code/tests --process-isolation
错误看起来像这样:
PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:234
Stack trace:
#0 /home/vagrant/code/routes/web.php(6): Illuminate\Support\Facades\Facade::__callStatic('get', Array)
#1 Standard input code(1653): require_once('/home/vagrant/c...')
#2 {main}
thrown in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234
Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:234
Stack trace:
#0 /home/vagrant/code/routes/web.php(6): Illuminate\Support\Facades\Facade::__callStatic('get', Array)
#1 Standard input code(1653): require_once('/home/vagrant/c...')
#2 {main}
thrown in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234
我已经尝试过在Laracast或StackOverflow上发现的3个或4个线程中的一些关于这种异常的事情,但仍然没有任何效果:
关于在哪里寻找或检查的任何想法?我的想法不多了。
使用最新的Laravel 5.8和PHPUnit 8.0.6
答案 0 :(得分:0)
我要尝试的第一件事是:单独运行失败的测试,而不是针对整个测试文件夹。
接下来,我将确保失败的测试是否通过setFacadeApplication()
或类似方法调用createApplication()
。例如,如果setUp()
没有调用其父项setUp()
,则可能未设置Facade中的静态变量$app
。就是这种情况the RuntimeException message says。
protected function setUp() // in your test case class
{
// parent::setUp(); // it's necessary
}
由于它是静态变量,因此一旦设置,它的值将在没有--process-isolation
的所有测试用例中保持可用。
答案 1 :(得分:0)
我遇到了同样的错误。我通过创建一个新的应用程序容器并将其绑定到Facade对其进行了修复。
$app->withFacades();
流明:bootstrap / app.php
get-aduser -Filter * -Properties CN,samaccountname,AccountExpirationDate,Enabled,lastLogonTimestamp | Select CN,samaccountname,AccountExpirationDate,Enabled,@{n="lastLogonDate";e={[datetime]::FromFileTime,
($_.lastLogonTimestamp)}} |sort Enabled | export-csv "c:\lemon.csv"