【问题标题】:Laravel tests request set bodyLaravel 测试请求集正文
【发布时间】:2022-01-02 00:07:01
【问题描述】:

我有一个 API 使用 $request->getContent(); 来获取正文(即 JSON),我想编写一些功能测试来测试这个端点,但我找不到在 Laravel 功能测试中设置正文的方法:

public function testSuccessfullyProcessed()
{
    $json = '<json>';

    $response = $this->get('/api/process');

    $response->assertStatus(200);
}

根据Visual Studio Code,没有像$this-&gt;setBody$this-&gt;setContent 这样的东西。我搜索了$this的方法,找不到方法吗?

我花了一些时间在谷歌上搜索各种东西,但我只找到有关如何获取尸体的信息。

【问题讨论】:

    标签: laravel testing request phpunit


    【解决方案1】:

    我假设您想设置请求的正文;如果是这样,您可以通过以下方式在 post 请求的第二个参数中传递数据。

    public function testSuccessfullyProcessed()
    {
        $testData = [
            'my_data_1' => 'Test Data'
        ];
    
        $response = $this->post('/api/process', $testData);
    
        $response->assertStatus(200);
    }
    

    如果您打算手动设置请求的响应,我认为您可能搞混了,因为这没有任何意义。

    【讨论】:

    • 问题是我的数据不是关联数组,而是简单的 JSON 编码字符串。
    • @PetarVasilev 然后decode它首先
    • 但我需要在端点接受它。 @布莱恩汤普森
    • @PetarVasilev 听起来您需要使用所有相关详细信息更新您的问题。如果您需要 JSON 在控制器中保留编码字符串,那么您可以将其分配给请求$this-&gt;post('..', ['data' =&gt; $json]) 中的属性,但这似乎是一个奇怪的要求。请edit您的问题准确包含您想要的结果。
    • @BrianThompson 我想在端点 $request-&gt;getContent() 返回 JSON,然后继续对其进行解码并使用它。
    猜你喜欢
    • 2021-09-28
    • 2012-12-19
    • 2015-04-10
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2021-07-28
    相关资源
    最近更新 更多