Почему я получаю "Неверный 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

Другие вопросы по тегам