【发布时间】:2015-02-14 21:05:05
【问题描述】:
我想模拟对 Guzzle 请求的响应:
$response = new Response(200, ['X-Foo' => 'Bar']);
//how do I set content of $response to--> "some mocked content"
$client = Mockery::mock('GuzzleHttp\Client');
$client->shouldReceive('get')->once()->andReturn($response);
我注意到我需要添加接口作为第三个参数:
GuzzleHttp\Stream\StreamInterface
但是它的实现太多了,我想返回一个简单的字符串。有什么想法吗?
编辑:现在我用这个:
$response = new Response(200, [], GuzzleHttp\Stream\Stream::factory('bad xml here'));
但是当我检查这个时:
$response->getBody()->getContents()
我得到一个空字符串。为什么是这样?
编辑 2:这仅在我使用 xdebug 时发生,当它正常运行时效果很好!
【问题讨论】:
-
为什么不直接模拟
Response呢?!我想被测类的行为取决于响应。所以你也想模拟它,这样你就可以确保每次 CUT 的输入数据都是相同的。