0
我正在編寫SOAP API的集成測試(代碼示例如下)。如何調試SOAP調用?
現在我得到一個錯誤,並想調試我的服務器端代碼(在PhpStorm中)。但是調試器只考慮測試中的斷點並忽略服務器端代碼。
好吧,我可能粗略地理解了原因:$soapClient->doSomething(...);
的調用開始一個新的HTTP請求。 如何獲得這個「子請求」(從PhpUnit的角度來看)調試?
集成測試的代碼:
class UserIntegrationTest extends TestCaseBase
{
const URL = "http://my-server.loc/soapapi/user/wsdl";
public static $classMap = [];
/** @var SoapClient */
private $soapClient;
/** @var ConfigurationServiceInterface */
private $config;
public function setUp()
{
parent::setUp();
$options = [
'exceptions' => true,
'login' => 'foo',
'password' => 'pwd',
'encoding' => 'utf-8',
// 'proxy_host' => '192.168.2.96',
// 'proxy_port' => '8080',
'classmap' => [],
'connection_timeout' => 5,
];
$this->soapClient = new SoapClient(self::URL, $options);
}
/**
* @test
* @group integration
*/
public function testDoSomething()
{
$options = array(
'exceptions' => true,
'login' => 'foo',
'password' => 'pwd',
'encoding' => 'utf-8',
// 'proxy_host' => '192.168.2.96',
// 'proxy_port' => '8080',
'classmap' => [],
'connection_timeout' => 5,
);
$soapClient = new SoapClient(self::URL, $options);
$message = new MyMessage();
$message->x = 1;
$message->y = 2;
$result = $soapClient->doSomething($message);
}
protected function getDataSet()
{
return new ArrayDataSet([
'users' => [
[
'id' => 1,
'username' => 'foo',
'password' => '...',
],
],
...
]);
}
}
...或者只是在php.ini中配置'xdebug.remote_autostart = 1' - xdebug將嘗試調試_every單一request_不管「調試我」參數/ cookie。缺點 - 影響所有請求,而不僅僅是SOAP。 – LazyOne
我不想改變Xdebug的行爲。但對於一個沒有任何問題的人來說,它肯定會起作用,甚至會是更好/更簡單的解決方案。 – automatix