goszowski
@goszowski
PHP Developer

Что не так с параметрами в HTTP тестировании?

Вот мой тест:
public function testGetDataGoodResponse()
{
    $response = $this->call('GET', '/getdata', [
        'inn' => mt_rand(1111111111, 9999999999),
        'id' => mt_rand(11111111, 99999999) . '_0_' . mt_rand(111111111, 999999999),
    ]);

    $response->assertStatus(200);
}


Вот метод контроллера (дамп реквеста в начале)
public function getData(Request $request)
{

    dd($request->all());

    $validator = Validator::make($request->all(), [
        'inn' => 'required|numeric|digits:10',
        'id' => 'required|string',
    ]);

    if($validator->fails())
    {
        dd($validator->errors());
        throw new \Exception('error inn or id');
    }
}


Но этот дамп выводит пустой массив:
>vendor\bin\phpunit
PHPUnit 7.5.2 by Sebastian Bergmann and contributors.

.[]


Если убрать дамп, то валидатор ругается:
vendor\bin\phpunit
PHPUnit 7.5.2 by Sebastian Bergmann and contributors.

.Illuminate\Support\MessageBag {#208
  #messages: array:2 [
    "inn" => array:1 [
      0 => "The inn field is required."
    ]
    "id" => array:1 [
      0 => "The id field is required."
    ]
  ]
  #format: ":message"
}


Делаю вывод, что параметры не переданы, но почему? Как исправить?
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
dark1112
@dark1112
Web developer
$response = $this->call('GET', '/getdata', [
    'query' => [
        'inn' => mt_rand(1111111111, 9999999999), 
        'id' => mt_rand(11111111, 99999999) . '_0_' . mt_rand(111111111, 999999999),
    ]
]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы