2016-01-21 3 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() s?

ответ

0

Мое текущее решение является добавление $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); 
} 
Смежные вопросы