Laravel PHPUnit:如何测试 url 前缀
Posted
技术标签:
【中文标题】Laravel PHPUnit:如何测试 url 前缀【英文标题】:Laravel PHPUnit: how to test url prefix 【发布时间】:2015-11-10 09:11:02 【问题描述】:我正在学习构建一些 phpUnit 测试。当不使用前缀时,我的应用程序会重定向到默认语言,例如: www.myapp.com 有 301 重定向到 www.myapp.com/en,而 www.myapp.com/en 有 200 OK。
试图对我的控制器进行测试,我有以下代码
$response = $this->action('GET', 'HomeController@index');
$this->assertEquals(200, $response->getStatusCode());
响应为 301(由于此语言前缀检查)。如何使用前缀测试这些控制器?谢谢
【问题讨论】:
你使用的是什么版本的 Laravel? 【参考方案1】:尝试将此属性添加到您的 tests/TestCase.php
文件中。
// The base URL to use while testing the application.
protected $baseUrl = 'http://localhost/en';
【讨论】:
值得注意的是,这只适用于 Laravel 5.4 之前的版本。请参阅下面@Moppo 的回答。【参考方案2】:从 Laravel 5.4 开始,$baseUrl
方法不再起作用
您可以在测试中动态设置自定义根 URL:
\URL::forceRootUrl('http://www.myapp.com/en');
【讨论】:
以上是关于Laravel PHPUnit:如何测试 url 前缀的主要内容,如果未能解决你的问题,请参考以下文章
如何创建仅用于测试的 Laravel 路由(phpunit)?
如何使用 laravel 和 phpunit 测试文件上传?
如何从 PHPUnit 测试设置运行 Laravel 数据库播种机?