gpt4 book ai didi

php - 使用 Orchestra Testbench 测试独立 Laravel 包时出现错误 : Class 'Route' not found in routes. php

转载 作者:行者123 更新时间:2023-12-02 13:55:02 24 4
gpt4 key购买 nike

我现在遇到了一个奇怪的问题。

我目前正在构建一个 Laravel 包,该包位于 Github https://github.com/matthewbdaly/laravel-error-snapshot 上。 。我正在使用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 中显式导入 Route Facade。同样,它仅在本地工作,但返回了不同的错误消息:

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 并在启用覆盖的情况下运行测试,我可以在本地重现错误:

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

我认为这与路线立面没有以某种方式得到解决有关。

最佳答案

事实证明,答案相当简单。我只需要从测试覆盖率生成中排除路由文件:

文件 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>

关于php - 使用 Orchestra Testbench 测试独立 Laravel 包时出现错误 : Class 'Route' not found in routes. php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com