Несколько HTTP-запросов в интеграционных тестах Laravel 5

Мы разрабатываем наши проекты на Laravel 4. Один из наших интеграционных тестов выполняет два последовательных HTTP-запроса к одному и тому же контроллеру:

public function testFetchingPaginatedEntities() {
    $response = $this->call('GET', "foos?page=1&page_size=1");
    // assertions

    $response = $this->call('GET', "foos");
    // some more assertions
}

Как видите, второй запрос не содержит никаких параметров строки запроса. Однако мы заметили, что наш контроллер получал page и page_size в обоих запросах.

Мы смогли исправить это, перезапустив тестовый клиент между вызовами (как описано в Тесты контроллера Laravel 4 - ErrorException после слишком большого количества $this-›call() - почему?):

public function testFetchingPaginatedEntities() {
    $response = $this->call('GET', "foos?page=1&page_size=1");
    // assertions

    $this->client->restart();

    $response = $this->call('GET', "foos");
    // some more assertions
}

Сейчас мы рассматриваем перенос нашего проекта на Laravel 5, но похоже, что $this->client больше не доступен в тестах, так как L5 больше не использует Illuminate\Foundation\Testing\Client.

Может ли кто-нибудь предоставить альтернативу сбросу тестового клиента? Или, может быть, способ вообще избежать его перезапуска?


person cafonso    schedule 10.02.2015    source источник
comment
Может быть связано с этим - github.com/laravel/framework/issues/6373 - Я сообщил об этом некоторое время назад - до сих пор не исправлено.   -  person Laurence    schedule 10.02.2015
comment
Спасибо, я буду следить за этим.   -  person cafonso    schedule 10.02.2015
comment
@TheShiftExchange к вашему сведению, я открыл проблему в Github, и похоже, что они уже исправили ее: github. com/laravel/framework/pull/7380   -  person cafonso    schedule 10.02.2015
comment
@cafonso: значит, $this->client->restart() больше не нужен?   -  person spacek33z    schedule 10.03.2015
comment
@ spacek33z На самом деле я не пробовал, потому что мы пока остались на L4, но да, это больше не нужно. IIRC, это конкретная фиксация, которая устранила проблему: github.com/laravel/framework/commit/   -  person cafonso    schedule 11.03.2015


Ответы (1)


$this->refreshApplication();

между звонками решил проблему для меня на Laravel 5.4.

person alexeydemin    schedule 03.09.2017
comment
Это не работает, если вы тестируете sqlite :memory: - person Jeff Puckett; 18.08.2018