我现在有一个奇怪的问题。
我目前正在https://github.com/matthewbdaly/laravel-error-snapshot建立一个位于Github上的Laravel软件包。我使用Orchestra Testbench package自行测试此软件包以及BrowserKit扩展程序。
当我在本地运行测试套件时,它工作正常。但是,在Travis CI中,它会抛出以下错误:
Error: Class 'Route' not found in /home/travis/build/matthewbdaly/laravel-error-snapshot/src/routes.php on line 3
所以我尝试在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
我真的不确定它为什么在一个环境中工作而不是另一个环境。任何人都可以对此有所了解吗?就我所知,它对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
我认为这与路线外观无法以某种方式解决有关。
答案 0 :(得分:3)
事实证明,答案相当简单。我只需要从测试覆盖生成中排除路径文件:
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory>
<exclude>
<directory suffix=".php">./src/database</directory>
<file>./src/routes.php</file>
</exclude>
</whitelist>
</filter>