Pat*_*all 9 php phpunit soap wsdl web-services
我试图用以下代码模拟SoapClient:
$soapClientMock = $this->getMockBuilder('SoapClient')
->disableOriginalConstructor()
->getMock();
$soapClientMock->method('getAuthenticateServiceSettings')
->willReturn(true);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为Phpunit mockbuilder没有找到函数getAuthenticateServiceSettings.这是WSDL中指定的Soap函数.
但是,如果我扩展SoapClient类和getAuthenticateServiceSettings方法,它确实有效.
问题是我有100个SOAP调用,都有自己的参数等所以我不想模拟每个SOAP函数,或多或少地重新创建整个WSDL文件...
有没有办法模仿"魔法"方法?
use*_*136 20
PHPUnit允许您基于wsdl文件存根Web服务.
$soapClientMock = $this->getMockFromWsdl('soapApiDescription.wsdl');
$soapClientMock
->method('getAuthenticateServiceSettings')
->willReturn(true);
Run Code Online (Sandbox Code Playgroud)
见这里的例子:
我通常不直接使用\ SoapClient类,而是使用使用SoapClient的Client类.例如:
class Client
{
/**
* @var SoapClient
*/
protected $soapClient;
public function __construct(SoapClient $soapClient)
{
$this->soapClient = $soapClient;
}
public function getAuthenticateServiceSettings()
{
return $this->soapClient->getAuthenticateServiceSettings();
}
}
Run Code Online (Sandbox Code Playgroud)
这种方式比模拟SoapClient更容易模拟Client类.