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)?

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

如何从 PHPUnit 测试设置运行 Laravel 数据库播种机?

如何使用 PHPUnit 在 Laravel 上测试更复杂的案例

如何在 laravel 5.5 中使用 phpunit 测试中间件?