测试框架Mocha

可测试代码的几个原则:

  • 单一职责:逻辑尽可能的单一,分离不同的功能
  • 接口抽象:针对接口进行测试,具体代码的变化不会影响接口测试
  • 层次分离:代码分层,可以进行逐层测试

测试

  • BDD:行为驱动开发,注重测试逻辑,常用的describe, it, before, after
  • TDD:测试驱动开发,注重测试结果,常用的suite, test, setup, teardown
  • mocha默认的模式是BDD,要想执行TDD的测试时需要加上参数
mocha -u tdd test.js

Mocha和Jasmine对比

  • Mocha自身集成度不高(没有断言,spy,异步等)经常要配合Chai,Sinon等库使用
  • Jasmine集成度高,自带BBD,spy,方便的异步支持(2.0)
  • Jasmine功能齐全,Mocha灵活自由

两者功能覆盖范围粗略可以表示为:

Jasmine(2.x) === Mocha + Chai + Sinon - mockserver

Mocha

  • Mocha是一个JavaScript的测试框架,chai是一个断言库,两者应该搭配使用
  • Mocha提供的钩子包括before(), after(), beforeEach(), afterEach()可用于测试的预处理和后处理等
  • demo
describe('save()', function() {
      it('should save without error', function(done) {
         ...
       done();
     });
});
//描述应该能连成一句通顺的话
//在对数据库操作的时候,可以加上done()回调函数,解决异步问题
//一个it只能调用一次done,

断言库

  • 常用断言库:should.js/expect.js/chai.js/better-assert/assert
  • should.js——BDD风格断言库
foo.should.be()
bar.should.have()
  • expect.js——BDD风格断言库;基于should.js简化
expect(foo).to.be()
expect(foo).to.eql()
  • chai——BDD/TDD 双模 ,同时支持should / expect / assert三种风格的断言库
assert: assert.equal(something, someting)
should: something.should.equal(something)
expect: expect(something).to.equal(someting)

demo地址

参考文章推荐:
How to correctly unit test Express server
使用Mocha和Chai来测试Node.js应用
测试框架 Mocha 实例教程
初识 mocha in NodeJS
测试利器mocha
HTTP 服务器测试库 supertest
Mocha官网

你可能感兴趣的:(测试框架Mocha)