Node.js项目实战-构建可扩展的Web应用(第一版):3 Node.js基于Mocha的测试驱动开发和行为驱动开发
2018-01-10 21:05
951 查看
测试驱动开发(TDD)是一种主要的敏捷开发技术。它最强大之处是可以提升代码的质量,改进错误的检查方式,以及增强程序员的信心,使其获得更有效率的开发手段。
纵观历史,Web应用已经越来越难以自动测试,开发者们严重依赖手动测试。但其实,一些特定的项目,比如独立的服务和REST API可以且必须用TDD来测试。同时,富用户界面应用也可以用PhantomJS这种无界面浏览器来进行测试。
行为驱动开发(BDD)的概念是基于TDD的。它鼓励产品负责人与开发者合作,这一点在语言上不同于TDD。
测试框架Mocha:
$ ./node_modules/mocha/bin/mocha test_name
TDD主要的思想:定义一个单元测试、执行这个单元测试、验证这个测试是否通过;
BDD是TDD的一个专业版本,它指定了从业务需求的角度出发需要哪些单元测试。
虽然,使用assert模块来写测试也是可行的,但用Mocha测试框架来实现TDD和BDD会更好。如下:获取测试报告、支持异步模式和丰富的可配置项。
$ mocha app.js -R nyan //测试报告
理解Mocha的hook机制:当特定的事件触发时hook才执行。测试函数中加上done参数
test.js
断言库Chai:npm install chai@1.8.1
Expect.js的语法:
$ mkdir tests
tests/index.js
将配置参数写入Makefile:
纵观历史,Web应用已经越来越难以自动测试,开发者们严重依赖手动测试。但其实,一些特定的项目,比如独立的服务和REST API可以且必须用TDD来测试。同时,富用户界面应用也可以用PhantomJS这种无界面浏览器来进行测试。
行为驱动开发(BDD)的概念是基于TDD的。它鼓励产品负责人与开发者合作,这一点在语言上不同于TDD。
测试框架Mocha:
3.1 安装与理解Mocha
$ npm install mocha@1.16.2$ ./node_modules/mocha/bin/mocha test_name
TDD主要的思想:定义一个单元测试、执行这个单元测试、验证这个测试是否通过;
BDD是TDD的一个专业版本,它指定了从业务需求的角度出发需要哪些单元测试。
虽然,使用assert模块来写测试也是可行的,但用Mocha测试框架来实现TDD和BDD会更好。如下:获取测试报告、支持异步模式和丰富的可配置项。
$ mocha app.js -R nyan //测试报告
理解Mocha的hook机制:当特定的事件触发时hook才执行。测试函数中加上done参数
3.2 用assert(断言)进行测试驱动开发
用assert进行TDD:test.js
var assert = require('assert') describe('String#split', function(){ it('should return an array', function() { //使用it方法测试是否有数组 assert(Array.isArray('a,b,c'.split(','))); }) })$ mocha test
断言库Chai:npm install chai@1.8.1
3.3 用Expect.js进行行为驱动开发
用Expect.js进行BDD:npm install expect.js@0.2.0Expect.js的语法:
3.4 项目:为博客写第一个BDD测试
不进行UI测试,但可以发送几个HTTP请求,然后解析从应用程序REST端返回的响应数据。$ mkdir tests
tests/index.js
将配置参数写入Makefile:
相关文章推荐
- Node.js项目实战-构建可扩展的Web应用(第一版):11 部署Node.js应用
- Node.js项目实战-构建可扩展的Web应用(第一版): 7 使用ORM类库Mongoose提升你的Node.js数据
- Node.js项目实战-构建可扩展的Web应用(第一版):8 使用Express.js和Hapi构建Node.js REST API服务
- Node.js项目实战-构建可扩展的Web应用(第一版): 6 在Node.js应用中使用session和OAuth进行用户认证和授权
- Node.js项目实战-构建可扩展的Web应用(第一版): 1 安装Node.js及相关要点
- 第3章-Node.js基于Mocha的测试驱动开发和行为驱动开发-3.1.测试驱动开发(TDD)和行为驱动开发(BDD)
- Node.js项目实战-构建可扩展的Web应用(第一版): 4 模板引擎:Jade和Handlebars
- Node.js项目实战-构建可扩展的Web应用(第一版):9 WebSocket,Socket.IO和DerbyJS的实时应用程序
- Node.js项目实战-构建可扩展的Web应用(第一版): 2 使用Express.js 4创建Web应用程序
- Node.js项目实战-构建可扩展的Web应用(第一版):10 为Node.js应用上线做准备
- Node.js项目实战-构建可扩展的Web应用(第一版): 5 MongoDB、Mongoskin特性
- Node.js项目实践:构建可扩展的Web应用
- 构建简单的Maven工程,使用测试驱动的方式开发项目
- 构建基于Node.js的web应用
- 基于Node.js的JavaScript项目构建工具gulp的使用教程
- 使用Node.js + Mongodb构建基于Cloud Foundry的项目
- 基于Python的行为驱动开发实战
- 如何Vue-cli开始使用在Vue.js项目中启动TDD(测试驱动开发)
- React 16+Redux+React Router 4 Node.Js全栈开发招聘App项目实战视频
- 使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目