`
windmark
  • 浏览: 32426 次
社区版块
存档分类
最新评论

如何在Flex开发中使用mock service

    博客分类:
  • Flex
阅读更多

在我们的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

分享到:
评论

相关推荐

    示例:在各种框架和库中使用Mock Service Worker的示例

    本示例将深入讲解如何在不同的框架和库中集成和使用Mock Service Worker,以便于在开发过程中创建更可靠和可维护的代码。 一、理解Mock Service Worker Mock Service Worker(MSW)是基于Service Worker API构建的...

    vue-cli3中使用mock(实际项目中快速搭建)

    Mock 数据是在开发过程中代替真实服务器数据的模拟数据。它可以是JSON格式或其他格式,用于前端展示和测试。在前后端分离的开发模式下,Mock数据让前端开发不受后端进度限制,提高开发效率。 3. **Mock API**: ...

    Object-CMock objects for Objective-C在Objective-C中使用Mock对象的实践

    这个项目是关于在Objective-C中使用Mock对象的实践。Mock对象是软件测试中的一种重要工具,用于模拟真实对象的行为,从而在单元测试中隔离被测代码的依赖项。本项目将介绍如何使用Objective-C的测试框架和第三方库来...

    Python在测试中使用Mock的方法

    Python在测试中使用Mock的方法

    ember-graphql-mocking:使用Mock Service Worker(MSW)模拟GraphQL请求的Ember插件

    @ bagaar / ember-graphql-mocking Ember插件,用于使用Mock Service Worker(MSW)模拟GraphQL请求。...[有关如何在应用程序中使用插件的详细说明。] 贡献 有关详细信息,请参见指南。 执照 该项目已获得。

    模拟mock.zip

    在IT行业中,Mock技术是一种非常重要的测试方法,特别是在前端开发中。它允许开发者在不依赖实际后端服务的情况下,对应用程序进行单元测试和集成测试。`模拟mock.zip`这个压缩包文件显然与Mock技术相关,其中包含的...

    mockServer,mock服务端

    MockServer 是一个强大的工具,主要用于在开发过程中模拟服务器行为,特别是在接口开发和测试阶段。它允许开发者在没有实际后端服务的情况下,创建模拟的HTTP和HTTPS服务器,以便于快速验证前端代码或者自动化测试。...

    Mock是一个零侵入的服务端Mock平台,底层基于JVM Sandbox。相比于Fiddler、-mock-fe.zip

    Mock是一个强大的服务端模拟工具,它的核心特性是零侵入性,这意味着在你的实际项目代码中无需进行任何修改,即可实现服务的模拟。这极大地提高了开发效率,特别是在进行集成测试或者依赖于其他服务但又无法实时访问...

    Mock

    描述中的链接指向了一篇关于Mock的博客文章,虽然具体内容未给出,但可以推测文章可能涉及了如何使用Mock进行测试、Mock工具的介绍以及Mock在实际项目中的应用案例。 在IT行业中,Mock工具有很多,比如Java中的...

    mock在ut中的使用

    mock

    mock

    在标题"mock"中提到的,我们关注的是如何在Struts2框架中使用Mock技术进行测试。Struts2是一个流行的MVC(模型-视图-控制器)框架,它的Action类是业务逻辑的入口点。为了有效地测试Action,我们可以使用如Spring-...

    《vue项目使用mock模拟数据并实现列表的增、删、分页、批量操作功能》mock文件

    对应《vue项目使用mock模拟数据并实现列表的增、删、分页、批量操作功能》博客

    java单元测试 spring mock的使用

    最后,设置了servletContext的Attribute,以便在下面的程序中使用。 在PMSWebTestCase的setUp方法中,创建了MockServletConfig、MockFilterConfig、MockHttpServletRequest和MockHttpServletResponse等对象。这些...

    Go-goautomock使用gogenerate从接口自动生成mock

    3. **添加`go generate`指令**:在接口定义的同一个文件中,添加一条`go generate`注释指令,告诉`go generate`使用`goautomock`生成mock对象。指令格式如下: ```go //go:generate goautomock -i .MyService -o ...

    本地搭建一个mock服务器方便调试开发

    在“Node.js开发-测试相关”这一标签中,我们可以推断出我们将使用Node.js作为基础来创建Mock服务器。Node.js的非阻塞I/O模型和事件驱动架构使其适合处理大量并发请求,非常适合构建这样的服务器。 接下来,我们来...

    Go-Mockcounterfeiter-一个工具用于在Go中生成自容器类型安全的测试Mock对象

    通常,这样的版本控制可以帮助开发者跟踪工具的更新,确保他们在项目中使用的Mock counterfeiter是最稳定或最适合他们需求的版本。 在实际使用中,Mock counterfeiter通常结合Go的测试框架,如"gotest"或"github....

    mock数据.doc

    然后,在 main.js 文件中引入 Mock.js 并定义模拟数据。例如: ```javascript // 引入 Mock.js const Mock = require('mockjs'); // 定义模拟数据 Mock.mock({ 'data|1-4': '哑巴' }); ``` Mock.js 的方法 Mock...

    mock 介绍及原理,前后端 mock方法

    在后端开发中,Mock 可以使用框架如 Mockito、PowerMock、Mockserver、Moco 等,对服务的请求和响应进行模拟。 Mock 的好处包括: * 可以并行工作,不需要等待依赖方的开发完成 * 可以方便构造出各种异常的场景,...

Global site tag (gtag.js) - Google Analytics