我现在有一个奇怪的问题。
我目前正在在Github上的https://github.com/matthewbdaly/laravel-error-snapshot上构建一个Laravel软件包。我正在使用Orchestra Testbench软件包来单独测试该软件包以及它的BrowserKit扩展。
当我在本地运行测试套件时,它工作正常。但是,在Travis CI中,它将引发以下错误:
Error: Class 'Route' not found in /home/travis/build/matthewbdaly/laravel-error-snapshot/src/routes.php on line 3
Run Code Online (Sandbox Code Playgroud)
所以我尝试在中明确导入Route门面routes.php。同样,它仅在本地工作,但返回了不同的错误消息:
PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/travis/build/matthewbdaly/laravel-error-snapshot/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218
Run Code Online (Sandbox Code Playgroud)
我真的不确定为什么它可以在一种环境下工作,而不能在另一种环境下工作。谁能对此有所启示?就我所知,这似乎不是Travis CI的临时问题,但我不确定还有什么问题。
编辑:这很有趣...
如果我安装Xdebug并在启用coverage的情况下运行测试,则可以在本地重现该错误:
PHP Fatal error: Uncaught Error: Class 'Route' not found in /home/matthew/Projects/laravel-error-snapshot/src/routes.php:3
Stack trace:
#0 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(1097): include_once()
#1 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(269): SebastianBergmann\CodeCoverage\CodeCoverage->initializeData()
#2 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestResult.php(659): SebastianBergmann\CodeCoverage\CodeCoverage->start(Object(Tests\Feature\SnapshotTest))
#3 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestCase.php(894): PHPUnit\Framework\TestResult->run(Object(Tests\Feature\SnapshotTest))
#4 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestSuite.php(744): PHPUnit\Framework\TestCase->run(Object(PHPUnit\Framework\TestResult))
#5 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/ in /home/matthew/Projects/laravel-error-snapshot/src/routes.php on line 3
Run Code Online (Sandbox Code Playgroud)
我认为这与Route门面没有以某种方式解决有关。