第一次写博客,一直觉得自己文笔不好,懒于动笔,从现在开始,每周一篇博客,希望自己坚持。
那现在开始正文了。
一直觉得单元测试是一种比较鸡肋的东西,可能之前项目比较小,前端也只是3-4个人,所以虽然公司一直说写单元测试,可是一直也是敷衍了事,老是觉得不是很重要,现在随着团队越来越大,业务越来越清晰,内部模块之间的依赖越来越强,觉得TDD还是很有必要,可以减少程序逻辑方面的错误,尽可能的减少项目中的bug,下面说说我对mocha,should的一点理解。
1.ASSERTIONS(断言)
先介绍下Node.js内置的assert模块作为断言:
var assert = require('assert')
describe('Array #indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1, 2, 3].indexOf(4)/* 填空题 */)
})
})
这是一个比较简单的断言例子,断言Array [1, 2, 3] 是否包含 4,这个断言最后是success.
2.should.js
should.js
是一个比较小而精的测试框架,他能够满足在开发过程中所需要的大部分测试场景,同时也支持自己编写扩展来强化它的功能。在设计上,这个框架使用了不少巧妙的方法,避免了一些复杂的链式调用与参数传递等问题,而且结构清晰,比较适合进行阅读与学习。
require("should");
var name = "zhaojian";
describe("Name", function() {
it("The name should be zhaojian", function() {
name.should.eql("zhaojian");
});
});
3.TDD 和 BDD 的差别
TDD: Test-driven development (测试驱动开发)
是一种使用自动化单元测试来推动软件设计并强制依赖关系解耦的技术。使用这种做法的结果是一套全面的单元测试,可随时运行,以提供软件可以正常工作的反馈。
在编写真正实现功能的代码之前先编写测试,每次测试之后,重构完成,然后再次执行相同或类似的测试。该过程根据需要重复多次,直到每个单元根据所需的规格运行。
BDD:Behavior-Driven Development (行为驱动开发)
BDD将TDD的一般技术和原理与领域驱动设计(DDD)的想法相结合。 BDD是一个设计活动,您可以根据预期行为逐步构建功能块。
BDD的重点是软件开发过程中使用的语言和交互。
行为驱动的开发人员使用他们的母语与领域驱动设计的语言相结合来描述他们的代码的目的和好处。
4.karma自动化测试
Karma的主要目标是为开发人员提供高效的测试环境。 这种环境不需要设置大量的配置,而是开发人员只需编写代码并从测试中立即获得结果。 从而提高你的生产力和创造力。
安装:$ npm install karma --save-dev
describe('jQuery', function () {
it('should have jQuery', function () {
if (!window.jQuery) {
throw new Error('查看下 karma.conf.js 配置项 files 是否正确')
}
});
});
启动测试 $ karma start
查看浏览器控制台输出信息