2016-01-21 24 views
1

我们使用的Laravel版本是5.0,但也许这个问题也适用于Laravel 5.0+。Laravel - 功能测试:当前路线未被清除

在功能测试,如果我们所说的一些路径,路由器找到匹配的路线,但是如果我们再调用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

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

回答

0

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

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); 
}