- 浏览: 83785 次
- 性别:
- 来自: 杭州
-
最新评论
-
jzm0902:
赞一个
JS的event对象 -
zhangweichina:
非常感谢,帮我解决了一个让我头疼了很久的问题
Struts2 上传文件 -
llxhna:
一美女一美女一美女一美女一美女
jQuery类对象数组操作 -
othella:
qq38450529 写道请教:ellipsis.xml里面是 ...
用CSS做字符截断 -
qq38450529:
请教:ellipsis.xml里面是什么内容?
用CSS做字符截断
JsMock用于测试行为,接口的交互测试。
JsMock的地址: http://jsmock.sourceforge.net/
先看个官网上的最简单的例子
大概的流程如图:
JsMock功能简单却很实用。关键是看你如何运用。首先前端开发人员要有意识的做到UI/Logic分层。让UI部分的code仅仅只做UI显示用。任何逻辑相关的代码可以分离出来。目前前端UI测试没有好的工具,只能靠人肉。但是逻辑部分的code我们完全可以做好单元测试。利用JsUnit和JsMock做状态,行为测试。保证我们的代码质量。
JsMock的方法:
再来贴下JsMock的部分源码:
今天我给同事分享了这个,有人问我能否用JsMock模拟Ajax call的数据。我觉得可以定义一个测试用的Ajax类。加上用setInterval/setTimeout来模拟异步call的特性。关键看你自己如何运用。
我个人觉得JsMock非常的实用。
1. 节省时间
2. 保证代码质量
3. 不会被别人block住
这里有人会说要写额外的代码,怎么叫节省时间。可能你在写这些代码的时候是花了时间。但是比起后面要花在跟别人接口整合,和调试问题的时间,这点时间完全是值得的。
保证代码质量这块就不多说了。这是所有测试的目标。你可以写尽可能多的测试case,保证你的代码质量。
Mock即模拟的意思。即使在你开发时候你所依赖的接口还没有好,你可以把对象Mock起来,用andReturn/andThrow等方法来控制返回结果,控制你自己代码的行为。
在以后的代码我会尽量按照这个方向来的。
JsMock的地址: http://jsmock.sourceforge.net/
先看个官网上的最简单的例子
function Worker() { this.getValue = function() { /* ... */} this.isFinished = function() {/* ... */} } //Fixture function doWork(worker) { if(worker.isFinished()) { return worker.getValue(); } else { return null; } } //Tests function test_doWork() { //1. Create a mockControl object var mockControl = new MockControl(), //2. Use mockConrol create a mock object for the Class workerMock = mockControl.createMock(Worker); //3. Set the expects for methods of the Class workerMock.expects().isFinished().andReturn(true); workerMock.expects().getValue().andReturn('hello'); //4. Use mock as the instance of the Class, run it. var result = doWork(workerMock); //assertEquals('hello', result); //5. verify the test mockControl.verify(); } function test_doWork_null() { var mockControl = new MockControl(); workerMock = mockControl.createMock(Worker); workerMock.expects().isFinished().andReturn(false); var result = doWork(workerMock); <span class="comment">//assertNull(result);</span> mockControl.verify(); }
大概的流程如图:

JsMock功能简单却很实用。关键是看你如何运用。首先前端开发人员要有意识的做到UI/Logic分层。让UI部分的code仅仅只做UI显示用。任何逻辑相关的代码可以分离出来。目前前端UI测试没有好的工具,只能靠人肉。但是逻辑部分的code我们完全可以做好单元测试。利用JsUnit和JsMock做状态,行为测试。保证我们的代码质量。
JsMock的方法:
- createMock(Object2Mock) - Create the mock object
- andReturn(value) - Set the return value on one method for some control logic's test
- andThrow(throwMsg) - Let the method throw a exception you set
- andStub(block) - The parameter should be a function. You can use it to get the arguments of the method
- addMockMethod(method) - Add extra method into mock object
- reset() - Clear the excepts
- verify() - Verify the test
再来贴下JsMock的部分源码:
/** * Create the mock for object/class * @param objectToMock object/function * @return mock object */ createMock: function(objectToMock) { var mock = { calls: [], expects: function() { this.__recording = true; return this; }, __recording: false }; mock.expect = mock.expects; if(objectToMock != null) { //if the param is a function - a Class if( typeof(objectToMock) == 'function' ) { //create methods for class's static methods. this.__createMethods(objectToMock, mock); //new an instance of the class, and create methods for it this.__createMethods(new objectToMock(), mock); } else if( typeof(objectToMock) == 'object') { //if the param is an object, creat methods for it this.__createMethods(objectToMock, mock); } else { throw new Error("Cannot mock out a " + typeof(objectToMock)); } } var self = this; //add addMockMethod into mock object mock.addMockMethod = function(method) { self.__createMethod(self, mock, method); }; return mock; } ..... /** * @private create methods of the object/class into mock * @param object - the object you want to mock it * @param mock - the target mock object */ __createMethods: function(object, mock) { for( property in object ) { //if the property is a public method, create method into mock if( this.__isPublicMethod(object, property) ) { this.__createMethod( this, mock, property ); } } }, /** * @private create the method into mock * @param control - mockControl object * @param mock - the target mock object * @param method - the method need add into mock object */ __createMethod: function(control, mock, method) { //create the property of mock for the method mock[method] = function() { //If you call expect() first, the __recording value is true if( mock.__recording ) {// expect control.__lastMock = mock; control.__lastCallName = method; //add this method into expected calls control.__expectationMatcher.addExpectedMethodCall( mock, method, arguments ); //clear the flag mock.__recording = false; //return the control object return control; } else {// If it's real call //add this method into actual calls control.__expectationMatcher.addActualMethodCall( mock, method, arguments ); //read mock calls to get the array under the method if( mock.calls[method] != null) { //get the latest value, popup returnValue = mock.calls[method].shift(); //If the value is a function, apply it if( typeof(returnValue) == 'function') { return returnValue.apply(this, arguments); } } } }; }
今天我给同事分享了这个,有人问我能否用JsMock模拟Ajax call的数据。我觉得可以定义一个测试用的Ajax类。加上用setInterval/setTimeout来模拟异步call的特性。关键看你自己如何运用。
我个人觉得JsMock非常的实用。
1. 节省时间
2. 保证代码质量
3. 不会被别人block住
这里有人会说要写额外的代码,怎么叫节省时间。可能你在写这些代码的时候是花了时间。但是比起后面要花在跟别人接口整合,和调试问题的时间,这点时间完全是值得的。
保证代码质量这块就不多说了。这是所有测试的目标。你可以写尽可能多的测试case,保证你的代码质量。
Mock即模拟的意思。即使在你开发时候你所依赖的接口还没有好,你可以把对象Mock起来,用andReturn/andThrow等方法来控制返回结果,控制你自己代码的行为。
在以后的代码我会尽量按照这个方向来的。
发表评论
-
用CSS做字符截断
2010-08-14 17:30 1551CSS类定义: .ellipsis { overflo ... -
CSS在IE下的hack
2010-06-10 16:48 1108hack的例子: <!DOCTYPE html PUBL ... -
IE下postion relative被叠加的issue
2010-05-17 12:59 1385为了fix这个bug试了个例子: <div style= ... -
prototype概念
2009-12-04 17:03 722在JavaScript中,prototype对象是实现面向对象 ... -
IE7,IE8下弹出层上的编辑框会让底层的link透出来的问题
2009-11-16 14:59 1706在层和后面页面中间阻隔一层iframe 如果是model方式 ... -
采用scrollHeight来实现textarea框的自动加行或者减行
2009-11-16 14:48 5664基于jquery实现的: 1.在textarea上绑定blur ... -
jQuery类对象数组操作
2009-07-10 10:10 4875我们都知道jQUery对象中 ... -
jQuery性能优化指南(1)
2009-07-08 10:55 7751,总是从ID选择器开始继承 在jQuery中最快的选择器 ... -
jQuery性能优化指南---2
2009-07-08 10:27 8224,对直接的DOM操作进行 ... -
jQuery性能优化指南---3
2009-07-08 10:26 9968,尽量使用ID代替Class ... -
struts2的boolean属性转换备忘
2009-06-30 13:44 3368用eclipse自动产生的getter和setter方法不符合 ... -
parseInt的备忘
2009-06-25 16:41 813当前面有0的时候,parseInt默认把它当作八进制处理了 0 ... -
struts.xml配置文件说明
2009-06-09 13:16 630<!DOCTYPE struts PUBLIC ... -
Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值
2009-06-09 12:46 1354引用文章来源:http://www.blogjava.net/ ... -
ValueStack对象的传送带机制
2009-06-09 12:42 1034引用文章来源:http://www ... -
Struts2 国际化
2009-06-09 11:20 897引用文章出处:http://www.blogjava.net/ ... -
Struts2如何写自己的拦截器
2009-06-09 11:16 1576引用文章来源:http://www.blogjava.net/ ... -
Struts2拦截器概述
2009-06-09 11:14 881引用文章来源:http://www.blogjava.net/ ... -
Struts2 上传文件
2009-06-09 11:10 1548引用文章来源:http://www.blogjava.net/ ... -
Struts2-在Action类中获得HttpServletResponse对象的四种方法
2009-06-09 11:07 3694引用文章来源:http://www ...
相关推荐
4. **验证结果**:测试执行后,通过 JSMock 的验证功能检查模拟对象的行为是否符合预期。 5. **清理**:测试结束后,记得清理模拟对象,恢复正常的代码执行环境。 ### 开源优势 作为一个开源项目,JSMock 的源...
另,如果有诸如开发的API之类,可以在不部署测试服务器的情况下,将配置好的脚本发给合作方,用于辅助接口接入使用。##使用方法安装nodejs (必须)安装node-mockitsudo npm install -g或者sudo npm install node-...
mock基于、框架 开发的模拟数据基于 开发的模拟数据技术栈node.jsmock.jsexpress (node.js框架)目录结构├── logStyle // 控制台打印的样式├── mock // mock.js├── public // 公用的├── .gitignore // ...
uniapp实战商城类app和小程序源码,包含后端API源码和交互完整源码。
本课程是 PHP 进阶系列之 Swoole 入门精讲,系统讲解 Swoole 在 PHP 高性能开发中的应用,涵盖 协程、异步编程、WebSocket、TCP/UDP 通信、任务投递、定时器等核心功能。通过理论解析和实战案例相结合,帮助开发者掌握 Swoole 的基本使用方法及其在高并发场景下的应用。 适用人群: 适合 有一定 PHP 基础的开发者、希望提升后端性能优化能力的工程师,以及 对高并发、异步编程感兴趣的学习者。 能学到什么: 掌握 Swoole 基础——理解 Swoole 的核心概念,如协程、异步编程、事件驱动等。 高并发处理——学习如何使用 Swoole 构建高并发的 Web 服务器、TCP/UDP 服务器。 实战项目经验——通过案例实践,掌握 Swoole 在 WebSocket、消息队列、微服务等场景的应用。 阅读建议: 建议先掌握 PHP 基础,了解 HTTP 服务器和并发处理相关概念。学习过程中,结合 官方文档和实际项目 进行实践,加深理解,逐步提升 Swoole 开发能力。
matlab齿轮-轴-轴承系统含间隙非线性动力学 基于matlab的齿轮-轴-轴承系统的含间隙非线性动力学模型,根据牛顿第二定律,建立齿轮系统啮合的非线性动力学方程,同时也主要应用修正Capone模型的滑动轴承无量纲化雷诺方程,利用这些方程推到公式建模;用MATLAB求解画出位移-速度图像,从而得到系统在不同转速下的混沌特性,分析齿轮-滑动轴承系统的动态特性 程序已调通,可直接运行 ,关键词:Matlab;齿轮-轴-轴承系统;含间隙非线性动力学;牛顿第二定律;动力学方程;修正Capone模型;无量纲化雷诺方程;位移-速度图像;混沌特性;动态特性。,基于Matlab的齿轮-轴-轴承系统非线性动力学建模与混沌特性分析
2024年移动应用隐私安全观测报告.pdf
本电影评论网站管理员和用户。管理员功能有个人中心,用户管理,电影类别管理,电影信息管理,留言板管理,论坛交流,系统管理等。用户可以对电影进行评论。因而具有一定的实用性。本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得电影评论网站管理工作系统化、规范化。 本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高电影评论网站管理效率。 关键词:电影评论网站;SSM框架;MYSQL数据库 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1 MYSQL数据库 2 2.2 B/S结构 3 2.3 Spring Boot框架简介 4 3系统分析 4 3.1可行性分析 4 3.1.1技术可行性 4 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2系统性能分析 5 3.2.1 系统安全性 5 3.2.2 数据完整性 6 3.3系统界面分析 6 3.4系统流程和逻辑 7 4系统概要设计 8 4.1概述 8 4.2系统结构 9 4.
2023-04-06-项目笔记-第四百三十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.434局变量的作用域_434- 2025-03-13
基于STM32的流量计智能流速流量监测、水泵报警系统(泵启动 1100027-基于STM32的流量计智能流速流量监测、水泵报警系统(泵启动、阈值设置、LCD1602、超阈值报警、proteus) 功能描述: 基于STM32F103C8单片机实现的智能流速、流量,流量计设计 实现的功能是通过信号发生器模拟齿轮传感器,检测流量的大小,同时计算流过液体的总容量 可以设置最大流过的总容量,当超过设定值后通过蜂鸣器与LED灯指示 当没有超过则启动水泵控制电路带动液体流动 1、流速检测 2、流量统计 3、阈值显示与设置(通过按键实现阈值的调节或清零) 4、水泵启动 5、超阈值报警 有哪些资料: 1、仿真工程文件 2、PCB工程文件 3、原理图工程文件 4、源代码 ,核心关键词: 基于STM32的流量计; 智能流速流量监测; 水泵报警系统; 阈值设置; LCD1602; 超阈值报警; Proteus仿真; STM32F103C8单片机; 齿轮传感器; 信号发生器; 流量统计; 蜂鸣器与LED灯指示; 水泵控制电路。,基于STM32的智能流量监测与报警系统(阈值可调、流速与流量监
(灰度场景下的平面、海底、船、受害者)图像分类数据集【已标注,约1100张数据】 数据经过预处理,可以直接作为分类网络输入使用 分类个数【4】:平面、海底、船、受害者【具体查看json文件】 划分了训练集、测试集。存放各自的同一类数据图片。如果想可视化数据集,可以运行资源中的show脚本。 图像分类、分割网络改进:https://blog.csdn.net/qq_44886601/category_12858320.html 计算机视觉完整项目:https://blog.csdn.net/qq_44886601/category_12816068.html
arkime无geo下的oui文件
人脸识别项目实战
人脸识别项目实战
CAD 2025 二次开发dll
人脸识别项目源码实战
c语言学习
基于扩张状态观测器eso扰动补偿和权重因子调节的电流预测控制,相比传统方法,增加了参数鲁棒性 降低电流脉动,和误差 基于扩张状态观测器eso补偿的三矢量模型预测控制 ,基于扩张状态观测器; 扰动补偿; 权重因子调节; 电流预测控制; 参数鲁棒性; 电流脉动降低; 误差降低; 三矢量模型预测控制,基于鲁棒性增强和扰动补偿的电流预测控制方法
c语言学习
UE开发教程与学习方法记录.zip