大家好,我为 XmlRPC-Api 编写了一个低级实现,但在测试通信时遇到了麻烦。
这是我的代码。
abstract class BaseClient
{
protected function call($method, array $params = array())
{
$request = xmlrpc_encode_request($method, $parameters);
$file = file_get_contents($this->getDSN(), false, $context);
$response = xmlrpc_decode($file);
if ($response && xmlrpc_is_fault(array($response))) {
trigger_error("xmlrpc: {$response[faultString]} ({$response[faultCode]})");
}
return $response;
}
}
Client extends BaseClient
{
public function testCall($msg)
{
return $this->call('testMethid', array($msg));
}
}
这是我的测试。
ClientTest extends PHPUnit_FrameWork_TestCase
{
public function testTestCall()
{
$c = new Client();
$resp = $c->testCall('Hello World');
$this->assertEquals('Hello World', $resp);
}
}
该测试每次都会崩溃,因为它无法在测试环境中访问 api。我看不到模拟和注入call
函数的解决方案。我能做些什么?也许我的对象结构不好并且无法测试,我该如何改进这个结构(如果发生这种情况)?
干杯。