- 浏览: 32175 次
最新评论
在我们的Flex项目开发中,Service通常是不可缺少的一部分(我们通常将数据交互相关的逻辑封装成Service层,比如您基于Flex做了一个CMS管理平台,那么和后台数据相关的操作(查询,增加,删除,修改),可以封装为Service,也可以进一步封装为Delegate+Service),至于具体通讯方式,可以是HTTP Service,Web Service,或Remote Object,您可以根据需求自己选择,这个并不影响我们对Sercice的定义。
然后就出现了一个问题,我们在开发的初始阶段,由于后台Server尚未准备好,我们需要在Flex端产生一些虚拟数据,来帮助我们的模块完成开发和测试,这就相当于我们临时使用了一个虚构的服务器,来代替真实的后端Server,这就是mock service的概念。
要完成这个功能,我们建议使用Delegate+Service的模式,将您的应用逻辑与Service解除耦合,这样方便我们临时注入一个mock service,而不影响您其它模块的代码。
至于mock service的具体编写方式,跟您对Delegate的封装方式有关。由于对Service的调用,都是异步调用,所以我们建议您用AsyncToken封装对Service的调用,同时将代理封装为一个接口实现。看一个抽象的例子:
IDelegate
public interface IDelegate { function login(user:User):AsyncToken; }
LoginDelegate.as
public class LoginDelegate implements IDelegate { public function login(user:User):AsyncToken { return service.login(user); } }
这里假设我们的Service是一个RemoteObject对象,通过IoC方式注入到了代理中。那么在项目初期,我们可以使用一个虚构的代理,来返回一些虚拟数据(在我们的逻辑代码中要使用接口的方式使用代理,而不是具体的代理实现类)。比如:
MockDelegate
public class MockDelegate implements IDelegate { public function login(user:User):AsyncToken { CursorManager.setBusyCursor(); logger.info("test delegate login调用:{0},{1}",user.userName,user.password); currentToken = new AsyncToken(); var returnData:ReturnData = new ReturnData(); if(user.userName == "jim" && user.password == "jim") { returnData.status = 1; returnData.info = "登录成功"; returnData.data = user; } else { returnData.status = 0; returnData.info = "用户名或密码错误"; } var evt:ResultEvent = new ResultEvent(ResultEvent.RESULT,false,true,returnData,currentToken); setTimeout(dataBack,1000,currentToken, evt); return currentToken; } private function dataBack(token:AsyncToken, result:ResultEvent):void { mx_internal:token.applyResult(result); CursorManager.removeBusyCursor(); } }
由于使用了代理,和接口的机制,那么基本上将具体Service的实现和我们其它部分的逻辑代码做了隔离,当后端Server准备好,我们只需要切换回真实的数据即可,而无需对其它部分的逻辑代码做改动。
转载:http://www.riadev.com/flex-thread-543-1-1.html
发表评论
-
async-threading 让flex支持多线程(转)
2014-07-17 16:57 771开源项目async-threading能使as3支持多线程, ... -
Flex 多图片压缩上传
2014-07-10 15:04 847转自:http://my.oschina.net/eats ... -
Flex AMF Upload Demo
2013-05-05 20:44 919java端:写一个名为ZhuaTuSerlvet的Serl ... -
FXG Test
2012-12-17 23:52 677<?xml version="1.0&q ... -
My Flex Skin
2012-11-23 08:58 87My Flex Skin -
Flex中的DataGrid的内容处理(总结)
2012-11-08 10:59 7901.介绍一下DataGrid中数据的增加/删除/获取。添加/删 ... -
flex DataGrid 表头分组
2012-11-05 08:46 969<mx:AdvancedDataGrid id ... -
AS3分享:FLEX开发者必备的十多个工具
2012-11-01 00:07 644http://as3.aa-a.net/index.php/a ... -
AS3研究TextField心得
2012-10-31 23:41 1598AS3研究TextField心得这两天自己做了texti ... -
Flex efflex 开源库
2012-10-31 00:00 620http://www.efflex.org/FlexEffec ... -
Flex 字体 消除锯齿相关
2012-10-30 23:34 15311. Adobe 官方: 控制 ... -
Flex实用工具
2012-10-26 08:43 57Flex实用工具 -
Flex使用module加载swf,部分组件样式丢失
2012-10-24 15:44 765flex使用module加载swf,部分组件样式丢失(da ... -
My calendar
2012-10-22 14:21 601My calendar design -
使用ObjectUtil来遍历flex as Object对象的所有属性
2012-10-12 10:48 728遍历或者复制一个as 对象所有的属性,可以模仿java使用反射 ... -
AS3 Copy 对象
2012-10-12 10:46 725第一种:public static function clon ... -
AS3 深复制
2012-10-12 10:44 75413.11 深度拷贝一个ArrayCo ... -
flex mvc 架构图
2012-09-25 15:12 675flex mvc 架构图 -
Parsley API
2012-08-16 08:40 774Parsley API -
如何从数组中随机取出多个不重复的项
2012-08-14 17:24 9531.问题如何随机取数组 ...
相关推荐
本示例将深入讲解如何在不同的框架和库中集成和使用Mock Service Worker,以便于在开发过程中创建更可靠和可维护的代码。 一、理解Mock Service Worker Mock Service Worker(MSW)是基于Service Worker API构建的...
Mock 数据是在开发过程中代替真实服务器数据的模拟数据。它可以是JSON格式或其他格式,用于前端展示和测试。在前后端分离的开发模式下,Mock数据让前端开发不受后端进度限制,提高开发效率。 3. **Mock API**: ...
这个项目是关于在Objective-C中使用Mock对象的实践。Mock对象是软件测试中的一种重要工具,用于模拟真实对象的行为,从而在单元测试中隔离被测代码的依赖项。本项目将介绍如何使用Objective-C的测试框架和第三方库来...
Python在测试中使用Mock的方法
@ bagaar / ember-graphql-mocking Ember插件,用于使用Mock Service Worker(MSW)模拟GraphQL请求。...[有关如何在应用程序中使用插件的详细说明。] 贡献 有关详细信息,请参见指南。 执照 该项目已获得。
在IT行业中,Mock技术是一种非常重要的测试方法,特别是在前端开发中。它允许开发者在不依赖实际后端服务的情况下,对应用程序进行单元测试和集成测试。`模拟mock.zip`这个压缩包文件显然与Mock技术相关,其中包含的...
MockServer 是一个强大的工具,主要用于在开发过程中模拟服务器行为,特别是在接口开发和测试阶段。它允许开发者在没有实际后端服务的情况下,创建模拟的HTTP和HTTPS服务器,以便于快速验证前端代码或者自动化测试。...
描述中的链接指向了一篇关于Mock的博客文章,虽然具体内容未给出,但可以推测文章可能涉及了如何使用Mock进行测试、Mock工具的介绍以及Mock在实际项目中的应用案例。 在IT行业中,Mock工具有很多,比如Java中的...
mock
在标题"mock"中提到的,我们关注的是如何在Struts2框架中使用Mock技术进行测试。Struts2是一个流行的MVC(模型-视图-控制器)框架,它的Action类是业务逻辑的入口点。为了有效地测试Action,我们可以使用如Spring-...
对应《vue项目使用mock模拟数据并实现列表的增、删、分页、批量操作功能》博客
最后,设置了servletContext的Attribute,以便在下面的程序中使用。 在PMSWebTestCase的setUp方法中,创建了MockServletConfig、MockFilterConfig、MockHttpServletRequest和MockHttpServletResponse等对象。这些...
3. **添加`go generate`指令**:在接口定义的同一个文件中,添加一条`go generate`注释指令,告诉`go generate`使用`goautomock`生成mock对象。指令格式如下: ```go //go:generate goautomock -i .MyService -o ...
在“Node.js开发-测试相关”这一标签中,我们可以推断出我们将使用Node.js作为基础来创建Mock服务器。Node.js的非阻塞I/O模型和事件驱动架构使其适合处理大量并发请求,非常适合构建这样的服务器。 接下来,我们来...
通常,这样的版本控制可以帮助开发者跟踪工具的更新,确保他们在项目中使用的Mock counterfeiter是最稳定或最适合他们需求的版本。 在实际使用中,Mock counterfeiter通常结合Go的测试框架,如"gotest"或"github....
Mock是一个强大的服务端模拟工具,它的核心特性是零侵入性,这意味着在你的实际项目代码中无需进行任何修改,即可实现服务的模拟。这极大地提高了开发效率,特别是在进行集成测试或者依赖于其他服务但又无法实时访问...
然后,在 main.js 文件中引入 Mock.js 并定义模拟数据。例如: ```javascript // 引入 Mock.js const Mock = require('mockjs'); // 定义模拟数据 Mock.mock({ 'data|1-4': '哑巴' }); ``` Mock.js 的方法 Mock...
在后端开发中,Mock 可以使用框架如 Mockito、PowerMock、Mockserver、Moco 等,对服务的请求和响应进行模拟。 Mock 的好处包括: * 可以并行工作,不需要等待依赖方的开发完成 * 可以方便构造出各种异常的场景,...