2016-01-21 57 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); 
}