你是如何故意让SoapFault进行测试的?

时间:2013-08-07 16:04:03

标签: php soap soap-client fedex soapfault

我实施了一个SoapClient接口,用于处理联邦快递费率请求网络服务的费率请求。昨天凌晨1点左右,系统返回了肥皂故障情况,我的代码处理了它的响应检查(如果没有找到有效的速率响应,它基本上会跳过并发送一般消息)但是没有具体处理。

当服务本身关闭时,我想向客户展示一个更有用的消息,特别是当远程服务实际上可能减少对我们技术支持的调用时出现此类故障。 (通用消息说'稍后再试',但如果我知道这特别是联邦快递服务出现问题,我可以说'联邦快递费率服务暂时不可用',所以人们会知道这不是我们的网站,而是他们的网站)

我已经实现了处理SoapFault条件的代码,但现在我遇到了“如何测试它”的问题,因为昨晚联邦快递费率服务只是短暂下降。

有没有办法故意触发肥皂状况,甚至可能是针对测试目的的特定肥皂故障?

3 个答案:

答案 0 :(得分:1)

我建议使用SoapUi来模拟服务。然后,您可以指出该服务将返回的响应。将您的应用指向模拟服务并从那里进行测试。请参阅SoapUi网站上的这篇文章:

http://www.soapui.org/Service-Mocking/mocking-soap-services.html

答案 1 :(得分:0)

很难知道FedEx Rate(或任何其他)Web服务何时会停止运行;但是,如果您属于FedEx Compatible Solutions Program (CSP),您将收到一封电子邮件,其中包含测试和生产服务不可用的正式日期和时间。

即使提供了该时间表,我也看到联邦快递服务(特别是费率)在没有任何通知的情况下被关闭。我可能会收到错误异常,失败通知,错误通知或超时异常。

由于很难知道服务何时实际停机,我建议您向用户提供“无法计算出货率的消息,请稍后再试。如果问题仍然存在,请联系我们的支持团队。当您从Rate网络服务获得的错误与用户提供的数据无关时。

最佳!

答案 2 :(得分:0)

如果您想故意触发服务故障,可以使用一些方法。

首先:为WSDL使用不同的URL。这样,什么都行不通,你会得到一个SoapFault异常。但请查看https://bugs.php.net/bug.php?id=47584,尤其是来自rasmus@php.net的评论:您必须激活抛出异常,使用@抑制错误,并且它不适用于加载的XDebug扩展。

实际上,无论如何都要这样做,因为这是捕获缺少WSDL资源的唯一方法 - 这可能会发生以及任何其他失败。

除此之外,您可能希望查看SoapUI并使用它来模拟真实服务并回复SoapFault答案。