#laravel #curl
#laravel #curl
Вопрос:
На основе этого https://laravel.com/docs/8.x/http-client вы можете генерировать запросы с помощью клиента CURL. Там отправляется опция assert specific с Http::assertSent
указанием конкретного запроса, подобного этому
Http::withToken('mytoken')->withHeaders([
'X-First' => 'foo',
])->post('http://test.com/users', [
'name' => 'Taylor',
'role' => 'Developer',
]);
как получить исходное представление заголовков запросов, отправленных для его отладки?
Ответ №1:
В документах для клиента описывается способ, которым вы можете утверждать, что определенный заголовок присутствует, и вы также можете дополнительно утверждать значение; https://laravel.com/docs/8.x/http-client#inspecting-requests .
Похоже, вы хотите удалить все заголовки.
Если мы посмотрим в документации, когда вы утверждаете, что запрос был отправлен, вам передается экземпляр IlluminateHttpClientRequest
. Если мы посмотрим IlluminateHttpClientRequest
, есть открытый метод для получения всех заголовков:
/**
* Get the request headers.
*
* @return array
*/
public function headers()
{
return collect($this->request->getHeaders())->mapWithKeys(function ($values, $header) {
return [$header => $values];
})->all();
}
Итак, в вашем тесте вы могли бы сделать что-то вроде этого:
Http::fake();
//... your test
Http::assertSent(function ($request) {
dump($request->headers());
// replace this with an actual assertion but it’s needed to print the dump out
return true;
});
Комментарии:
1. Привет, ты это тестировал? Я получаю ожидаемый запрос, который не был записан. Не удалось подтвердить, что false равно true.
2. Понял, вы должны вернуть true , чтобы напечатать результат, спасибо! Возможно, вы захотите обновить ответ, чтобы добавить это.
3. Я использовал этот метод для проверки материала раньше, да. Вы получаете эту ошибку, потому что вы на самом деле не возвращаете true или false из своего утверждения. Я не знаю, что вы хотите утверждать, поэтому я не могу написать ваше утверждение для вас.