- 浏览: 83605 次
- 性别:
- 来自: 杭州
最新评论
-
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 1541CSS类定义: .ellipsis { overflo ... -
CSS在IE下的hack
2010-06-10 16:48 1103hack的例子: <!DOCTYPE html PUBL ... -
IE下postion relative被叠加的issue
2010-05-17 12:59 1376为了fix这个bug试了个例子: <div style= ... -
prototype概念
2009-12-04 17:03 712在JavaScript中,prototype对象是实现面向对象 ... -
IE7,IE8下弹出层上的编辑框会让底层的link透出来的问题
2009-11-16 14:59 1697在层和后面页面中间阻隔一层iframe 如果是model方式 ... -
采用scrollHeight来实现textarea框的自动加行或者减行
2009-11-16 14:48 5655基于jquery实现的: 1.在textarea上绑定blur ... -
jQuery类对象数组操作
2009-07-10 10:10 4869我们都知道jQUery对象中 ... -
jQuery性能优化指南(1)
2009-07-08 10:55 7711,总是从ID选择器开始继承 在jQuery中最快的选择器 ... -
jQuery性能优化指南---2
2009-07-08 10:27 8174,对直接的DOM操作进行 ... -
jQuery性能优化指南---3
2009-07-08 10:26 9928,尽量使用ID代替Class ... -
struts2的boolean属性转换备忘
2009-06-30 13:44 3362用eclipse自动产生的getter和setter方法不符合 ... -
parseInt的备忘
2009-06-25 16:41 809当前面有0的时候,parseInt默认把它当作八进制处理了 0 ... -
struts.xml配置文件说明
2009-06-09 13:16 627<!DOCTYPE struts PUBLIC ... -
Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值
2009-06-09 12:46 1347引用文章来源:http://www.blogjava.net/ ... -
ValueStack对象的传送带机制
2009-06-09 12:42 1031引用文章来源:http://www ... -
Struts2 国际化
2009-06-09 11:20 890引用文章出处:http://www.blogjava.net/ ... -
Struts2如何写自己的拦截器
2009-06-09 11:16 1571引用文章来源:http://www.blogjava.net/ ... -
Struts2拦截器概述
2009-06-09 11:14 878引用文章来源:http://www.blogjava.net/ ... -
Struts2 上传文件
2009-06-09 11:10 1541引用文章来源:http://www.blogjava.net/ ... -
Struts2-在Action类中获得HttpServletResponse对象的四种方法
2009-06-09 11:07 3690引用文章来源: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 // ...
全自动洗衣机PLC控制与智能交互系统:基于西门子S7-1200和TP700触摸屏程序的Z03实践(使用博途v15.1及IO表),题目二全自动洗衣机PLC控制西门子S7-1200和TP700触摸屏程序Z03,博途v15.1,带IO表 ,Z03全自动洗衣机; PLC控制; 西门子S7-1200; TP700触摸屏程序; 博途v15.1; IO表,全自动洗衣机PLC控制S7-1200与TP700触摸屏程序Z03(博途v15.1,带IO表)
617d773df6bb6cf9ae5ac5e95da7b096.part2
基于S7-200 PLC与组态王技术的分拣系统:大小球颜色、大小及材质的智能识别与控制,No.883 基于S7-200 PLC和组态王大小球颜色大小材质分拣 ,核心关键词:S7-200 PLC; 组态王; 大小球; 颜色; 大小; 材质; 分拣; 识别。,基于S7-200 PLC的组态王分拣系统:大小球颜色材质综合管理
基于距离调控的变频器加减速带参数子程序控制策略,根据距离控制变频器加减速带参数子程序。 可以根据设置的加速距离和减速距离输出变频器的输出频率。 ,核心关键词:距离控制;变频器;加减速带参数;子程序;输出频率。,基于距离控制的变频器加减速参数子程序
基于StyleGAN的草图到服装图像的生成方法.pdf
C#开发高效能3D点云可视化软件,支持CSV表格数据导入与渲染处理,使用C#语言开发的3D点云显示软件,以CSV表格格式读取 ,核心关键词:C#语言开发;3D点云显示软件;CSV表格格式读取;点云数据可视化。,C#开发的3D点云显示软件:CSV格式数据读取与展示
"基于机会约束规划理论的含可再生能源热电联供微网优化研究:考虑源荷不确定性的微网模型及其优化策略的复现与验证",考虑源荷不确定性的热电联考虑源荷不确定性的热电联供微网优化 复现《含可再生能源的热电联供型微网经济运行优化》,采用粒子群算法,采用机会约束规划理论出力源荷不确定性,采用概率方法来表达,目标函数代码完美复刻了文献中的目标函数和约束条件,约束部分采用清晰简明的等式和不等式部分,方便理解,采用罚函数的形式形成最终目标函数值。 本程序包括确定性模型和不确定性模型两部分程序代码,方便对照学习微网优化 ,核心关键词: 热电联供微网优化; 源荷不确定性; 粒子群算法; 机会约束规划理论; 概率方法; 目标函数; 约束条件; 确定性模型; 不确定性模型。,粒子群算法驱动的含源荷不确定性的热电联供微网优化程序
968a658a40c897eb4452d8718cf0f8e6.part2
B超技术:相控阵超声波的逐点与目标级聚焦策略——基于DAS算法与K-wave工具箱的应用研究,B超 算法 相控阵 超声波 逐点聚焦 目标级聚焦 DAS算法 K-wave工具箱 ,B超; 算法; 相控阵; 超声波; 逐点聚焦; 目标级聚焦; DAS算法; K-wave工具箱,"B超成像技术:相控阵超声波算法与DAS、K-wave工具箱的联合应用"
MATLAB仿真:Delta并联机器人的正逆运动学分析与Simulink及Simscape仿真研究,MATLAB仿真 delta并联机器人 simulink simscape仿真 正逆运动学 ,MATLAB仿真; delta并联机器人; Simulink; Simscape仿真; 正逆运动学,MATLAB仿真:Delta并联机器人正逆运动学分析的Simulink与Simscape应用
车辆路径智能优化算法:多维度策略与参数调整的物流配送研究,车辆路径智能算法包括如下: 1.遗传算法车辆路径优化 2.蚁群算法路径优化3.粒子群算法路径优化4.模拟 火算法路径优化 5.节约算法CW路径优化 6.人工鱼群路径优化。 节约算法车辆路径 遗传算法车辆路径,物流配送,带时间窗和载重量约束改进,vrp,cvrp ,vrptw物流配送,路径优化,车辆配送。 遗传算法路径优化,软时间窗,硬时间窗,客户满意度,物流选址,车辆路径,物流配送。 matlab完整代码,可修改坐标,需求和时间窗 和算法等相关参数。 ,核心关键词: 遗传算法车辆路径优化; 蚁群算法路径优化; 粒子群算法路径优化; 模拟退火算法路径优化; 节约算法CW路径优化; 人工鱼群路径优化; 物流配送; 车辆路径优化; 软时间窗; 硬时间窗; 客户满意度; 物流选址; MATLAB完整代码。,智能算法在车辆路径优化中的应用
matlab实现GA-BP时序预测完整程序+数据
基于特征的表面表达模型–体参数化模型转化方法.pdf
基于LSTM算法的换道轨迹预测:LC轨迹特征数据的MATLAB编码实现与解析,可用于LSTM道轨迹预测的LC轨迹特征数据 . MATLAB coding 道历史轨迹特征(i80,US101):横纵向速度,横纵向加速度,轨迹坐标,向左OR向右道标志,时间列,车辆id; ,LSTM; 轨迹特征数据; MATLAB coding; 换道历史轨迹; 横纵向速度; 横纵向加速度; 轨迹坐标; 车辆id; 车辆换道方向(向左OR向右); 时间列,LSTM换道轨迹预测:MATLAB代码与LC轨迹特征数据融合研究
基于OpenSees的梁柱节点建模与十字节点模拟分析:深入探讨JOINT2d与beamColumnJoint单元的应用,基于opensees梁柱节点建模 十字节点模拟 [1]采用JOINT2d节点单元或者element beamColumnJoint单元,采用Pinching4材料模型考虑核心区剪切行为和粘结滑移效应; 也可以使用hysteretic本构0长度单元模拟节点变形,2种代码均有。 [2]价格包括模型建模代码和1对1指导教学; [3]计算Pinching4材料的Membrane-2000小程序 梁端加载滞回代码 参考文献:基于OpenSees的装配式混凝土框架节点数值模拟方法研究-曹徐阳; ,核心关键词: OpenSees建模; 梁柱节点; JOINT2d节点单元; element beamColumnJoint单元; Pinching4材料模型; 核心区剪切行为; 粘结滑移效应; hysteretic本构0长度单元; 节点变形; 模型建模代码; 1对1指导教学; Membrane-2000小程序; 梁端加载滞回代码。,OpenSees梁柱节点建模:十字节点模拟与材料行为分析
中医院问诊系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
LabVIEW与PLC数据通信:深入解析与程序源码实例,labview和PLC数据通信 程序源码 ,Labview; PLC数据通信; 程序源码,LabView与PLC数据通信的程序源码示例