Post 使用phpspec中另一个mock返回的mock

Post 使用phpspec中另一个mock返回的mock,post,mocking,httprequest,phpspec,Post,Mocking,Httprequest,Phpspec,我是新来的phpspec(来自phpunit),在设置另一个mock返回的mock的行为时遇到问题 我正在围绕Guzzle客户机创建一个包装器类,我想检查响应的输出 以下是规格: function it_gets_response_status_code(Client $client, Url $url, Response $response) { $this->beConstructedWith($client); $url->__toString()->w

我是新来的
phpspec
(来自
phpunit
),在设置另一个mock返回的mock的行为时遇到问题

我正在围绕
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中找不到关于使用另一个mock返回的mock的资源。我想知道这是不是因为代码的味道?如果是这样的话,我很高兴看到我如何能以不同的方式做到这一点(目前我看不出我如何能保持代码的简单性并以不同的方式进行操作)。

尝试:

assert($this->getResponseStatusCode()->getWrappedObject() === 200);
这:

返回包装在
主题
对象中的“200”字符串,如果需要,可以对其进行模拟/存根调用。要获得主题的真实值,需要调用
getWrappedObject

$response->getStatusCode()->willReturn(200)