php - [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。
我该如何解决?
解决方案
您可以执行以下操作。
在您的 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
推荐阅读
- r - 在 R 中制作字符序列的最聪明方法
- git - Git 帮助:如何重置 git?不是分支,而是所有 git?
- java - 如何创建这些矩阵?
- amazon-web-services - 是否需要在外部网站中为 AWS Cloudfront 进行配置?
- git - 如何将 .flutter-plugins-dependencies 放在 gitignore 中?
- c++ - 将元素名称构造为 Cout?
- windows - 通过串口获取 Windows 内核日志
- arrays - 已解决 [“方法 ResponseFactory::toArray 不存在。”]
- java - 生成签名的 APK 时 - 找不到“com.google.code.findbugs:jsr305”的版本
- api - 艾玛迪斯自助服务 API