1

我实现了一个 SoapClient 接口来处理对联邦快递费率请求 Web 服务的费率请求。昨晚凌晨 1 点左右,系统返回了我的代码通过它的响应检查处理的肥皂故障条件(如果它没有找到有效的速率响应,它基本上会跳过并发送一条通用消息)但没有专门处理。

当服务本身关闭时,我想向客户显示更有用的消息,专门针对远程服务实际关闭时的此类故障,以减少对我们技术支持的呼叫。(通用消息说“稍后再试”,但如果我知道这是联邦快递服务关闭的具体问题,我可以说“联邦快递费率服务暂时不可用”,这样人们就会知道这不是我们的网站,而是他们的网站)

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

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

4

3 回答 3

1

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

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

于 2013-08-08T19:40:44.777 回答
0

很难知道 FedEx Rate(或任何其他)网络服务何时会关闭;但是,如果您属于FedEx 兼容解决方案计划 (CSP),您将收到一封电子邮件,其中包含测试和生产服务将不可用的官方日期和时间。

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

由于很难知道服务何时真正停止,建议您向用户提供“无法计算运费,请稍后重试。如果问题仍然存在,请联系我们的支持团队” . "当您从 Rate Web 服务获得的错误与用户提供的数据无关时。

最好的!

于 2013-08-08T16:10:58.513 回答
0

如果你想故意触发服务故障,有一些方法可用。

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

实际上,无论如何您都想这样做,因为这是捕获缺少的 WSDL 资源的唯一方法——这可能与任何其他故障一样发生。

对于其他任何事情,您可能希望查看SoapUI并使用它来模拟真实服务并返回 SoapFault 答案。

于 2013-08-08T18:47:44.647 回答