mocha提供TDD(测试驱动开发)和BDD(行为驱动开发)的风格
TDD 关注所有功能是否被正确实现,每个功能都对应有测试用例,。偏向于说明书的风格表达方式。
BDD 关注整体行为是否符合预期,适合自顶向下的设计方式。更接近自然语言的表达方式。
npm install -g mocha
npm install should
mocha作为一个集成框架,可以使用should作为一个断言库,也可以使用nodejs自带的assert模块
实例:
var assert = require("assert");
describe('Array', function(){
describe('#indexOf()', function(){
it('should return -1 when the value is not present', function(){
assert.equal(-1, [1,2,3].indexOf(5));
assert.equal(-1, [1,2,3].indexOf(0));
})
})});
使用should
require("should");
var name = "zhaojian";
describe("Name", function() {
it("The name should be zhaojian", function() {
name.should.eql("zhaojian");
});
});
describe("InstanceOf", function() {
it("Zhaojian should be an instance of Person", function() {
zhaojian.should.be.an.instanceof(Person);
});
it("Zhaojian should be an instance of Object", function() {
zhaojian.should.be.an.instanceof(Object);
});
});
describe("Property", function() {
it("Zhaojian should have property name", function() {
zhaojian.should.have.property("name");
});
});
对于嵌套要声明done,一个it中只能调用一次done
fs = require('fs');
describe('File', function(){
describe('#readFile()', function(){
it('should read test.ls without error', function(done){
fs.readFile('test.ls', function(err){
if (err) throw err;
done();
});
})
})})
Before & After
describe('hooks', function() {
before(function() {
// runs before all tests in this block
});
after(function() {
// runs after all tests in this block
});
beforeEach(function() {
// runs before each test in this block
});
afterEach(function() {
// runs after each test in this block
});
// test cases});
延迟执行
setTimeout(function() {
// do some setup
describe('my suite', function() {
// ...
});
run();}, 5000);