首先,为何咱们了解TDD与BDD的是什么意思?javascript
在实际项目中,大部分都是采用BDD的形式进行开发,也就是行为驱动开发。html
TDD,测试驱动开发,先编写单元测试代码,再去实现功能。java
更为详细的内容请自行查阅资料。node
既然要作TDD作开发模式,首先咱们得了解node assert,大部分单元测试框架都是基于node assert的,因此先熟悉了node assert才能更好上手should.js。git
AssertionError
fn
函数抛出错误。Mocha项目地址:visionmedia.github.com/mocha/github
should项目地址:github.com/visionmedia…chrome
Karma项目地址:karma-runner.github.io/npm
cd E: // 进入E盘
mkdir my-karma // 建立my-karma工程文件夹
cd my-karma // 进入my-karma工程文件夹
复制代码
npm install karma mocha --save-dev
复制代码
npm install karma-mocha karma-chrome-launcher --save-dev
npm install should --save-dev
复制代码
npm install -g karma-cli
复制代码
karma start
复制代码
运行后如图所示出现了一行INFO信息,并无其余提示和动做,由于此时咱们没有配置karma的启动参数。后面会加入karma.conf.js,这样karma就会自动启动浏览器并执行测试用例了windows
karma init
复制代码
/*** * Karma configuration * karma单元测试配置文件 */
module.exports = function(config) {
config.set({
/*** * 基础路径,用在files,exclude属性上 */
basePath: "",
/** * 测试框架 * 可用的框架:https://npmjs.org/browse/keyword/karma-adapter */
frameworks: ["mocha"],
/** * 须要加载到浏览器的文件列表 */
files: [
"test/*.js"
],
/** * 排除的文件列表 */
exclude: [
],
/** * 在浏览器使用以前处理匹配的文件 * 可用的预处理: https://npmjs.org/browse/keyword/karma-preprocessor */
preprocessors: {
"karmaTest/test.js" : "coverage"
},
/** * 使用测试结果报告者 * 可能的值: "dots", "progress" * 可用的报告者:https://npmjs.org/browse/keyword/karma-reporter */
reporters: ["progress", "coverage"],
/** * 使用reporters为"coverage"时报告输出的类型和那目录 */
coverageReporter: {
type: "html",
dir: "karmaTest/coverage"
},
/** * 服务端口号 */
port: 9876,
/** * 启用或禁用输出报告或者日志中的颜色 */
colors: true,
/** * 日志等级 * 可能的值: * config.LOG_DISABLE //不输出信息 * config.LOG_ERROR //只输出错误信息 * config.LOG_WARN //只输出警告信息 * config.LOG_INFO //输出所有信息 * config.LOG_DEBUG //输出调试信息 */
logLevel: config.LOG_INFO,
/** * 启用或禁用自动检测文件变化进行测试 */
autoWatch: true,
/** * 测试启动的浏览器 * 可用的浏览器:https://npmjs.org/browse/keyword/karma-launcher */
browsers: ["Chrome"],
/** * 开启或禁用持续集成模式 * 设置为true, Karma将打开浏览器,执行测试并最后退出 */
singleRun: true,
/** * 并发级别(启动的浏览器数) */
concurrency: Infinity
});
};
复制代码
test.jspromise
describe('验证add函数是否正确', function () {
it('1 + 2', function () {
should(add(1,2)).be.eql(3)
})
})
复制代码
add.js
function add(a, b) {
return a + b
}
复制代码
karma start
复制代码