Laravel - PHPUnit 中的伪造路由

Posted

技术标签:

【中文标题】Laravel - PHPUnit 中的伪造路由【英文标题】:Laravel - Faking route in PHPUnit 【发布时间】:2019-04-04 09:37:08 【问题描述】:

我一直在用 phpUnit(7.4.3 版)编写一些测试,但是在我的项目(Laravel 5.7.12 JSON API)的一些文件中,我需要使用路由(/users/123/posts/456),但是当 PHPUnit调用路由,request()->getPathInfo() 返回""

有没有办法伪造这个,或者用正确的数据填充它?

我在测试类中使用$this->getJson(route('users.index')); 调用路由。

【问题讨论】:

【参考方案1】:

您应该模拟 getJson 方法以返回您的响应的固定装置。

当您对应用进行单元测试时,您必须模拟任何外部依赖或类,以确保您只测试当前功能。

【讨论】:

感谢您的快速回复!模拟请求确实很有意义,所以我试了一下,但它还不起作用。你可以看看下面的 sn-p 并告诉我我是否做错了什么吗? $request = Mockery::mock(Request::class, [ 'pathInfo' => '/v1/users/self', ]); $this->app->instance(Request::class, $request); dd(request());我的想法来自以下来源:laracasts.com/discuss/channels/testing/…

以上是关于Laravel - PHPUnit 中的伪造路由的主要内容,如果未能解决你的问题,请参考以下文章

看不到响应获取请求 laravel phpunit

Laravel 路由上的 PHPunit 测试总是返回 404

如何创建仅用于测试的 Laravel 路由(phpunit)?

Laravel 5 PHPUnit - 从路由返回了无效的 JSON

如何使用 laravel 和 phpunit 测试文件上传?

Laravel 路由仅在 phpunit 测试期间返回 302 而不是 404 响应