为什么在状态码204时会出现“无效的JSON”?

时间:2018-06-16 18:06:53

标签: laravel http laravel-5 phpunit http-status-code-204

我不知道是否有意。但是当我在我的控制器中使用响应代码204时,我在PHPunit中得到“路由返回的无效JSON”。

但如果我将响应代码更改为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 个答案:

答案 0 :(得分:1)

如果您查看https://httpstatuses.com/204,可以阅读:

  

204响应由标题字段后的第一个空行终止,因为它不能包含消息正文。

因此,如果您使用204实际上没有任何内容将作出回应。

因此,您不应该在测试中运行->json()。您应该只验证状态代码是否为204