我们用来Varien_Http_Client
从 Magento 扩展发出 http 请求,如下所示:
public function callApi(…)
{
<SNIP>
// Set default factory adapter to socket in case curl isn't installed.
$client = new Varien_Http_Client($apiUri, array(
'adapter' => 'Zend_Http_Client_Adapter_Socket',
'timeout' => $timeout,
));
$client->setRawData($xmlDoc->saveXML())->setEncType('text/xml');
$response = $client->request($method);
$results = '';
if ($response->isSuccessful()) {
$results = $response->getBody();
}
return $results;
}
我知道我应该避免测试Varien_Http_Client
; 相反,我应该测试我们是否向它发送了正确的输入,并正确处理了它的输出。我可以Varien_Http_Client
很容易地模拟,但即使我重构这段代码让我Varien_Http_Client
用它的模拟替换,我也不明白如何通常*测试构造函数是用预期的参数调用的,因为构造函数是由PHPUnit::getMock
.
我不需要模拟对象;我需要一个模拟课。如何测试使用预期参数调用构造函数?
*(在这种情况下,我知道如何解决特定于 的这个问题Varien_Http_Client
,但是我能用更多不透明的第三方代码做什么?)