日期:2014-05-16 浏览次数:20442 次
BDD? 行为测试驱动开发,先用BDD测试工具描述用户行为,然后测试结果。这种方式更容易贴近需求。核心思想,描述故事,验证结果。
这里说BDD估计有点标题党的嫌疑,因为没有打算大篇幅说BDD, 况且自己也没有这方面的经验。下来只谈,如何在node.js中使用BDD开发库 - vows
?
这里我不打算直接使用vows, api-easy的方式会更让人赏心悦目;
?
$ npm install vows -g
这里需要加 "-g" 参数将其安装成globle, vows提供了commandline工具,用于执行测试, e.g:
$ vows test/*-test.js --spec
?
关于是否加"-g"参数,这里有个规则,如果开发包中提供了 bin 目录, 在安装的时候最好加上 "-g" 参数.
修改package.json:
?
{
"name": "nodeblog"
, "version": "0.0.5"
, "private": true
, "dependencies": {
"express": "2.4.6"
, "jade": ">= 0.0.1"
, "markdown-js": ">= 0.0.1"
}
, "devDependencies": {
"api-easy": "0.2.x"
, "vows": "0.5.x"
}
, "scripts": {
"test": "vows test/*-test.js "
}
, "engines": {
"node": ">= 0.4.5"
}
}
scripts 标签中定义的test可以使用 npm test 来运行. 使用vows 运行test目录下的测试用例
?
安装依赖:
$ npm install
$ npm test
?
$?mkdir test

?
测试首页是否存在,如果存在则返回200 statusCode, express程序还会返回一个特殊的header
?
var vows = require('vows');
var apiEasy = require('api-easy');
var assert = require('assert');
var suite = apiEasy.describe('/');
suite.discuss("when visit home page")
.discuss('can view blog list and it should response 200 status')
.use('localhost', 3000)
.setHeader('Content-Type', 'text/html; charset=utf-8')
.get()
.expect(200)
.expect("should respond with x-powered-by",
function(err, res, body) {
// express
assert.include(res.headers, 'x-powered-by');
})
.export(module);
?
其中