繁体   English   中英

Laravel-功能测试:当前路由未清除

[英]Laravel - Functional Testing: current route is not get cleared

我们使用的Laravel版本是5.0,但也许该问题也适用于Laravel 5.0+。

在功能测试中,如果我们调用某些路径,则路由器会找到匹配的路由,但是如果我们再调用404 url​​,则路由器不会重置当前路由:

public function testPages()
{
    $response = $this->call('GET', '/about');
    $this->assertEquals(200, $response->getStatusCode());

    // \Route::current() is not null

    // Call 404-route
    $response = $this->call('GET', '/asdfasdfasdf');
    $this->assertEquals(404, $response->getStatusCode());
}

当处理404时,我们在视图编辑器中调用\\Route::current() ,然后运行测试不为null ,但在浏览器中运行为null

如何在$this->call()之间将Laravel状态重置为初始状态?

我当前的解决方案是在每个$this->call()之前添加$this->refreshApplication() $this->call()

public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
{
    $this->refreshApplication();

    if (0 !== strpos($uri, 'http://') && 0 !== strpos($uri, 'https://')) {
        $uri = env('APP_URL') . $uri;
    }

    return parent::call($method, $uri, $parameters, $cookies, $files, $server, $content);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM