错误:Class';路线';在使用Orchestra Testbench测试独立的Laravel包时,routes.php中找不到
我现在有点奇怪 我目前正在构建一个Laravel包,它位于Github上。我正在使用来单独测试这个包以及它的BrowserKit扩展 当我在本地运行测试套件时,它工作得很好。但是,在Travis CI中,它抛出以下错误:错误:Class';路线';在使用Orchestra Testbench测试独立的Laravel包时,routes.php中找不到,php,laravel,laravel-5,Php,Laravel,Laravel 5,我现在有点奇怪 我目前正在构建一个Laravel包,它位于Github上。我正在使用来单独测试这个包以及它的BrowserKit扩展 当我在本地运行测试套件时,它工作得很好。但是,在Travis CI中,它抛出以下错误: Error: Class 'Route' not found in /home/travis/build/matthewbdaly/laravel-error-snapshot/src/routes.php on line 3 因此,我尝试在routes.php中显式导入路
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
我真的不知道为什么它在一个环境中工作,而不是在另一个环境中工作。有人能解释一下吗?就我所知,这看起来不像是特拉维斯CI的暂时问题,但我不确定还有什么其他问题
编辑:这很有趣
如果我安装Xdebug并在启用覆盖率的情况下运行测试,我可以在本地重现错误:
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
我认为这与路线立面没有得到解决有关。事实证明,答案相当直截了当。我只需要从测试覆盖率生成中排除routes文件: 文件
phpunit.xml
中的筛选器部分:
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory>
<exclude>
<directory suffix=".php">./src/database</directory>
<file>./src/routes.php</file>
</exclude>
</whitelist>
</filter>
/src
./src/数据库
./src/routes.php
Matthew,你救了我!对于任何想知道该文件在哪里(我在哪里)的人来说,它被称为phpunit.xml
,显然通常位于文档根目录中。