Laravel TDD игнорирует параметры URL-запроса при попытке перехватить их в контроллере с запросом - PullRequest
0 голосов
/ 30 апреля 2020

Я хотел бы написать тест, чтобы убедиться, что параметры моего запроса в URL работают нормально. Но всякий раз, когда я делаю request()->all(), я получаю пустой массив.

Вот моя тестовая часть:

public function test_it_should_paginate_the_results_when_perPage_query_is_used()
{
    // Given
    factory('App\Order', 17)->create();

    // When
    // $request = $this->call('GET', route('api.orders.index'), ['perPage' => '5']);
    // $request = $this->call('GET', route('api.orders.index') . '?perPage=5', ['perPage' => '5']);
    $request = $this->get(route('api.orders.index') . '?perPage=5');

    // Then
    $request->assertJsonCount(5);
}

А вот метод basi c в OrderController:

public function index()
{
    dd(request()->all());
    $orders = Order::all();
    return $orders;
}

Я что-то пропустил?


Я забыл упомянуть, что он выбирает параметры в браузере, но не в инструменте тестирования PHPUnit

ОБНОВЛЕННЫЙ ВОПРОС

Итак, я обнаружил проблему. Он не работает при тестировании с помощью команды php artisan test. Он работает только при использовании команды phpunit.

Не знаю почему.

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете передать данные как второй аргумент route() или как третий аргумент call():

$request = $this->get(route('api.orders.index', ['perPage' => 5]));
$request = $this->call('GET', route('api.orders.index', ['perPage' => 5]));
$request = $this->call('GET', route('api.orders.index'), ['perPage' => 5]);

Вот определения:

function route($name, $parameters = [], $absolute = true)

public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...