我在有效测试进行 Web 服务调用的 AS3 类时遇到了概念上的困难。采取以下示例代码:
class ServiceWrapper extends EventDispatcher
public function doStuff():void {
var loader:URLLoader = new URLLoader;
var request:URLRequest = new URLRequest();
request.url = 'http://myapiendpoint.com/foo';
var self:ServiceWrapper = this;
loader.addEventListener(Event.COMPLETE, function(event:Event):void {
if(loader.data == 'success') {
this.dispatchEvent('stuffDone');
} else {
this.dispatchEvent('stuffNotDone');
}
});
loader.load(request);
}
end
我只是想测试一下,如果服务返回“成功”,则实例分派一个stuffDone
事件类型,否则分派一个stuffNotDone
.
看起来如果不在应用程序代码中公开“测试接口”,就无法模拟 Web 服务响应。例如,我想到了以下示例:
- 将其设为
loader
公共属性或从公共返回,并在测试中将其替换为模拟。 - 使
loader
或 生成它的函数受保护并定义一个私有类,该类扩展ServiceWrapper
以提供对loader
.
第一个选项以非常丑陋的方式修改了界面。它可以通过文档解决(或者可能通过命名空间;不太确定如何去做),如果这是唯一的选择,我很好,但我觉得应该有更好的方法。
第二个稍微更好地保留了我认为的接口,但在测试中需要大量额外的代码。
对于我忽略的问题,是否有一些解决方案或观点?提前感谢您的帮助。