昨天与同事实现一个简单的地图定位功能,功能虽然简单,可是过程却是痛苦的,且程度是极度的。痛苦的主要原因源自于调试前端界面,也就是javascript部分。多年前也曾经写过许多javascript程序,那段历史可以追溯到ajax还未出现之前。以前写的时候因为自身、环境等各种原因,从来没有考虑过写javascript的单元测试。
经过昨天,深刻地体会了一次如果没有对javascript做单元测试,调试的过程是多么的痛苦。由于时间问题,今天粗略的google了一下javascript单元测试库,发现主要有:
- JSUnit – http://www.jsunit.net/
- jspec – http://jspec.info/
- jasmine – http://pivotal.github.com/jasmine/
- QUnit – http://docs.jquery.com/Qunit
- jsspec – http://code.google.com/p/jsspec/
在选择的时候原本准备选用jasmine,主要原因有三个:
- jasmine(茉莉花)本人最喜欢的花;
- jasmine的语法非常优美,非常适合BDD;
- jasmine可以与rails集成。
但是最后由于使用rails g jasmine:install时出错而打住了。最后选择了QUnit,因为他是jQuery提供的,jQuery有是那么的流行,定位地图很多也是基于jQuery写的,另外,有一个叫做mockjax的扩展,可以方便的模拟ajax请求。
下面用一个简单的例子记录今日的学习过程,并展示用QUnit如何进行TDD。
需求定义
提供一个消息窗体函数,该函数可以将一个div渲染成一个消息窗口。函数需要知道将渲染的div是哪个;需要知道用什么内容去渲染该消息窗体。
详细过程
分享到:
相关推荐
超级银河时代计算器马特·斯特劳德(Matt Stroud)上次更新时间2020年4月17日描述这是Epicodus的一个单独项目,用于演示测试驱动开发(TDD)。 该应用程序采用面向对象的程序设计。 用户输入他们的年龄,并将获得...
但是我非常擅长测试驱动开发(TDD),所以我想采用TDD风格。 我将在git存储库中的每个步骤中进行检查Gradle构建文件我的第一个任务是就地获得一个简单的Gradle构建文件。 在,我对build.gradle文件有了一个很好的...
一个超级愚蠢的配对练习 目标 这个应用程序的目标是在非常基本的层面上探索开发人员的沟通方式和解决问题的方式。... 鼓励采用 TDD 方法,但不要感到压力达到 100% 覆盖率。 我们可以对 javaScript 和任何使
我喜欢作为团队的一员工作,我想找到一家采用敏捷方法和 TDD 的公司,在那里我可以在为代码库做出贡献的同时不断发展我的技能。Web开发####最近的项目显示在特定日期发生的历史事件的世界地图。 可以使用滑块更改...
npm install特征: Angularjs 1.3 用户界面路由器为缩小/未缩小资产分离开发和生产目录用于运行任务的 Gulp 浏览器重新加载萨斯Jasmine 和 Karma 设置并为 TDD 做好准备量角器设置并准备好进行 e2e 测试吞咽任务gulp...
Node.js:构建RESTful API的完整指南 我想学习在基础知识的基础上,从设置到生产,使用Node.js,Express和数据库(MongoDB或MySQL)构建快速,可扩展和安全的RESTful服务。... 测试驱动开发(TDD)。 部署。
此外,这正是软件工程师测试其代码并采用测试驱动的开发(TDD)做法的原因。 但是,对于复杂SQL查询,没有等效的标准/区域性。 造成这种情况的部分原因是,过去查询的寿命更短,更简单:在大数据范例中,这种情况变...
应用程序是使用敏捷方法论开发的,并且每两天召开一次Scrum会议,并且大多采用结对编程。 利用功能依赖关系图来确定要处理的内容并最大程度地减少代码冲突 Waffle.io用于功能状态,任务分配和错误报告
使用由外向内 TDD/BDD 驱动 Rails 开发的所有层 使用专业的项目管理工具来调整和跟踪进度 完整的要求可以在查看 该团队预计将采用在模块 2 中作为最终项目创建的现有 Dinner Dash 项目,并将其“转换”为一个完全...
AngularJS 是一个开源 Web 应用程序框架,它通过提供客户端模型-视图-控制器 (MVC) 架构的框架以及富 Internet 应用程序中常用的组件来简化此类应用程序的开发和测试。 ###采用的新程序、语言、技术。 包管理器 ...