Почему я получаю "Неверный JSON", когда код статуса 204?
Я не знаю, предназначено ли это или нет. Но когда я использую Reponse Code 204 в моем контроллере, я получаю "Неправильный JSON был возвращен с маршрута" в PHPunit.
Но если я изменю код ответа на 201, все будет нормально... Почему?
protected function output($title, $status = 201)
{
return response([
'title' => $title,
'offers' => $this->popular,
], $status);
}
$this->output('Empty', 204); //Here is the error
В моем тесте
/** @test */
public function popular_can_fetch_food_lists() {
$result = $this->json('post', route('popular', [
'type' => $this->food->type,
'id' => $this->food->id
]))->json();
}
1 ответ
Решение
Если вы посмотрите на https://httpstatuses.com/204 вы можете прочитать:
Ответ 204 завершается первой пустой строкой после полей заголовка, поскольку он не может содержать тело сообщения.
Таким образом, в случае, если вы используете 204 для чего-либо на самом деле, никакого ответа не будет.
Таким образом, вы не должны, вероятно, бежать ->json()
в вашем тесте. Вы должны только проверить, если код состояния 204