【发布时间】:2016-04-04 15:32:56
【问题描述】:
我是phpspec(来自phpunit)的新手,在设置另一个模拟返回的模拟的行为时遇到问题。
我正在围绕Guzzle 客户端创建一个包装类,并且我想检查响应的输出。
这是规格:
function it_gets_response_status_code(Client $client, Url $url, Response $response)
{
$this->beConstructedWith($client);
$url->__toString()->willReturn('http://example.com');
$data = ['foo' => 'bar'];
$response->getStatusCode()->willReturn(200);
$client->request('POST', $url, ['form_params' => $data])->willReturn($response);
$this->post($url, $data);
assert($this->getResponseStatusCode() === 200); // Failing! :(
}
以及我班级中的相应函数:
public function post(Url $url, array $data)
{
$this->response = $this->client->request('POST', (string) $url, ['form_params' => $data]);
}
public function getResponseStatusCode()
{
return $this->response->getStatusCode();
}
断言失败,当我检查这个状态码是什么时,我看到它不是整数 200,而是PhpSpec\Wrapper\Subject 的一个实例。我在这里错过了什么?
我已经搜索和谷歌搜索,但找不到有关使用 phpspec 中另一个模拟返回的模拟的资源。我想知道这是不是因为它是代码味道?如果是这样,我很高兴看到我可以如何以不同的方式做到这一点(目前我无法看到如何让代码保持简单并以不同的方式进行)。
【问题讨论】:
标签: post mocking httprequest phpspec