错误:Class' Route'使用Orchestra Testbench测试独立的Laravel软件包时,在routes.php中找不到

时间:2017-11-17 18:42:28

标签: php laravel laravel-5

我现在有一个奇怪的问题。

我目前正在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

Source

所以我尝试在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

Source

我真的不确定它为什么在一个环境中工作而不是另一个环境。任何人都可以对此有所了解吗?就我所知,它对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

我认为这与路线外观无法以某种方式解决有关。

1 个答案:

答案 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>