`

JavaScript重构(三):JavaScript的测试

阅读更多

进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。

JsUnit (http://sourceforge.net/projects/jsunit/http://www.jsunit.net/

JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的setUp和tearDown,提供的assert方法也和JUnit类似,多了assertNaN和assertUndefined等等JavaScript特有的方法。测试页面必须在<head>里面引入jsUnitCore.js这个js文件。

测试套件的支持:提供了addTestPage和addTestSuite;

测试日志的支持:包括warn、info和debug三种日志级别,前端编码不似后台代码,正式代码中不宜使用过多log,再说log也只有FF下才支持。

 

千言万语不及一个例子:

<script language="javascript" src="jsUnitCore.js"></script> 
<script language="javascript" src="play.js"></script> //模块JS 

function testWithMainProcess() { 
  assertEquals("Web play url", "##http://...##", webOnlinePlay()); 
}

 

项目的代码里到处是Ajax调用,要做单元测试,看来打桩是不可避免了。Mock类的工具有许多,比如适合JQuery的QMock: 

var mockJquery = new Mock(); 
mockJquery 
.expects(1) 
.method('ajax') 
.withArguments({ 
  url: 'http://xxx, 
  success: Function, 
  dataType: "jsonp" 
}) 
.callFunctionWith({ feed : { entry : "data response" }}); 

 

这个桩正是mock了一个假的ajax jason返回:[feed:[entry:"data response"]],看看,使用就和以前接触过的EasyMock差不多嘛。

 

对于JavaScript测试框架感兴趣的同学还可以了解一些其他的测试框架,例如JSpec。

 

单元测试代码建议就放在模块的包内:test.html,即便理想状况下,模块单独发布时,也是伴随着测试用例的可靠的前端代码。

从哪些JavaScript代码开始做?

1、函数式的代码。这样的代码保证独立性好,也不需要打什么桩,测试成本低,如果不明白函数式的代码的含义,请参见“函数式编程”。

2、复杂的逻辑。

是否尝试TDD?不建议在我们团队内部使用,前端TDD需要更高的技巧,对人的因素要求更高。如果有一天,后台Java代码的TDD做好了,那么换成JavaScript的代码,没有本质区别。

 

如果效果得当,为什么不能把JavaScript的UT集成到ICP-CI上作为持续集成的一部分呢?

 

文章系本人原创,转载请注明作者和出处

分享到:
评论

相关推荐

    Javascript重构.pdf

    在进行JavaScript重构时,引入测试框架是至关重要的。JsUnit是一个独立的JavaScript测试框架,允许开发者编写和运行针对JavaScript代码的单元测试,确保重构过程中代码逻辑的正确性。 总之,JavaScript重构涉及模块...

    Javascript重构.docx

    首先,模块划分和命名空间是JavaScript重构的关键部分。模块化允许我们将代码分解成独立、可复用的单元,每个单元专注于特定的功能。这样做可以减少代码间的耦合,使得定位和修复问题变得更加容易。例如,我们可以...

    atom-javascript-refactor:atom javascript 重构工具

    Javascript 重构工具(pre 早期 alpha 版本)非常ALPHA版本这是一个非常有用的东西的早期版本。 主要功能,“仪器所有功能”在 ES6 中不能很好地工作。 我没有时间让它更稳定。 如果您使用的是 ES5,此命令可能会很...

    重构javascript

    重构javascript源码,详情请见blog.csdn.net

    JSRefactor:重构JavaScript

    用于JavaScript的实验性重构工具。 该项目探讨了使用指向信息作为重构逻辑基础的可能性。 主要项目: jsparser:具有有用ASTJavaScript解析器 jscontrolflow:JavaScript的控制流图 jspointers:JavaScript的指针...

    《网站重构:应用Web标准进行设计(第3版)》PDF

    在这一第三版中,作者可能会深入讲解近年来Web技术的新发展,如响应式设计、移动优先策略以及更现代的前端开发框架。 首先,"网站重构"是指在不改变网站外观的情况下,优化其结构和代码,使其更加简洁、规范和高效...

    JS代码重构:避免冗余,提取通用函数(1)

    - **测试代码**:重构后,务必进行全面的测试,确保所有功能都能正常工作,没有引入新的错误或不稳定因素。 通过学习本文,你将理解代码重构的重要性,并学会如何利用通用函数来优化JavaScript代码,提升代码的可...

    CSS重构:样式表性能调优

    资源名称:CSS重构:样式表性能调优内容简介:CSS对于现代网站的用户体验至关重要,其地位不亚于决定着网站外形的HTML和让网站动起来的Javascript。本书作为CSS代码重构指南,不仅展示了如何编写结构合理的CSS...

    refactorme-javascript-refactored:从一个专为测试开发人员重构能力而构建的项目中重构的项目

    总的来说,"refactorme-javascript-refactored"项目提供了一个实践和学习JavaScript重构的宝贵资源。通过深入研究这个项目,开发者不仅可以提高自己的重构技巧,还能提升代码质量,使得软件开发更加高效和可持续。

    测试驱动的JavaScript开发(Test-Driven JavaScript Development )

    #### 知识点三:《测试驱动的JavaScript开发》书籍概览 这本书由Christian Johansen撰写,提供了关于如何在JavaScript开发环境中实施测试驱动开发的全面指导。书中不仅包含了最新的自动化测试技术,还涵盖了从项目...

    js2-refactor.el, emacs的JavaScript重构库.zip

    js2-refactor.el, emacs的JavaScript重构库 js2-refactor.el emacs的JavaScript重构库。这是一个小型重构函数的Collection,以进一步了解从js2-mode开始的Emacs中的JavaScript IDE 。在 0.8.0中更改添加 e

    Backbone.js例子代码重构

    Backbone.js是一款轻量级的JavaScript库,专为构建复杂且结构化的Web应用而设计。它引入了模型-视图-控制器(MVC)的概念,帮助开发者更好地组织和管理前端代码。在这个“Backbone.js例子代码重构”的资源中,我们...

    OpenSC2K基于HTML5CanvasAPI和SQLite使用JavaScript重构SimCity2000

    在当今数字化时代,经典游戏的重制与重构成为了一种趋势,旨在为现代用户带来怀旧体验的同时,利用新技术提升游戏性能和交互性。OpenSC2K项目就是这样一个例子,它通过JavaScript编程语言,结合HTML5 Canvas API和...

    javascript-refactoring:我在编码塞尔维亚会议上的演讲资料库

    "javascript-refactoring:我在编码塞尔维亚会议上的演讲资料库"是一个专门探讨JavaScript重构主题的资源集合,源自2014年10月10日在编码塞尔维亚会议上的一次演讲。 重构是针对现有代码进行的结构改进,而不改变其...

    Eclipse的JavaScript插件 JSEditor

    4. **代码重构**:JSEditor支持JavaScript代码重构,包括重命名变量、提取函数等操作,这些操作对大型项目尤为重要,因为它们可以保持代码的整洁和一致性。 5. **调试工具**:除了编辑功能,JSEditor还集成了...

    使用 JavaScript 和源代码重构机器人游戏.zip

    项目:使用 JavaScript 重构机器人游戏 机器人重构游戏是一个 javascript 项目。这是一款简单而有趣的游戏,你可能已经将它列入了愿望清单。这款游戏主要包含 javascript 和一些 CSS,以使其看起来更美观。这款游戏...

    JavaScript-Methods:练习编写JavaScript方法

    压缩包中的"JavaScript-Methods-master"可能包含了练习代码、示例和测试用例,用于帮助开发者理解和实践JavaScript方法的重构。通过研究这些文件,可以了解到实际项目中如何运用Underscore.js方法,并从中学习到...

Global site tag (gtag.js) - Google Analytics