Я новичок в phpspec
(от phpunit
), и у меня возникают проблемы с настройкой поведения макета, возвращенного другим макетом.Использование макета, возвращенного другим макетом в phpspec
Я создаю класс оболочки вокруг клиента 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();
}
утверждение не удается, и когда я проверить, что этот код состояния, я вижу, что вместо integer 200, это экземпляр PhpSpec\Wrapper\Subject
. Что мне здесь не хватает?
Я искал и искал Google, но не могу найти ресурсы об использовании макета, возвращенного другим макетом в phpspec. Мне интересно, причина в том, что это запах кода? Если так, я был бы рад увидеть, как я мог бы сделать это по-другому (в настоящее время я не вижу, как я мог бы держать код простым и делать по-другому).