dongpaipu8394 2018-02-27 08:05
浏览 253
已采纳

来自Guzzle的PHPUnit和模拟请求

I have a class with the following function :

public function get(string $uri) : stdClass
{
    $this->client = new Client;
    $response = $this->client->request(
        'GET',
        $uri,
        $this->headers
    );

    return json_decode($response->getBody());
}

How can I mock the request method from PHPUnit? I tried different ways but it always tries to connect to the uri specified.

I tried with :

    $clientMock = $this->getMockBuilder('GuzzleHttp\Client')
        ->setMethods('request')
        ->getMock();

    $clientMock->expects($this->once())
        ->method('request')
        ->willReturn('{}');

But this didn't work. What can I do? I just need to mock the response to be empty.

Thanks

PD : Client comes from (use GuzzleHttp\Client)

  • 写回答

2条回答 默认 最新

  • duan032225 2018-02-27 09:11
    关注

    I think as suggested is better to use http://docs.guzzlephp.org/en/stable/testing.html#mock-handler

    as it looks like the most elegant way to do it properly.

    Thank you all

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部