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 测试总是返回 404
如何创建仅用于测试的 Laravel 路由(phpunit)?
Laravel 5 PHPUnit - 从路由返回了无效的 JSON