首页 > 解决方案 > [verb]升级到 7.x 后测试中的 Json() 方法不遵守 config('app.url')

问题描述

几分钟前,我按照升级指南将 laravel 版本从 6.16.0 升级到了 7.17.2 。

但是我的测试现在失败了,但有以下异常:Symfony\Component\HttpKernel\Exception\NotFoundHttpException : POST http://localhost/v1/orders

在我的文件中APP_URL设置为。但是在我的基本 TestCase 类中,我使用自定义端点覆盖了 config('app.url') 。在升级之前,测试选择了自定义端点。http://localhost.env

自上次升级以来,显然 getJson()、postJson() 等辅助方法不是从文件应用 URL,config('app.url')而是直接从.env文件应用 URL。因为当我对.env文件中的 URL 进行硬编码时,我不再收到 NotFoundHttpException。

我该如何解决?

标签: phplaravel

解决方案


您可以执行以下操作。

在您的 phpunit.xml 中:

<php>
    <server name="APP_URL" value="http://example.com"/>
</php>

或者在您的测试用例中:

use Illuminate\Support\Facades\URL;

protected function setUp(): void
{
    parent::setUp();

    URL::forceRootUrl('http://example.com');
}

这两个都会导致app('url')->to('my-endpoint')打印http://example.com/my-endpoint


推荐阅读