转自:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html
Mocha在describe
块之中,提供测试用例的四个钩子:before()
、after()
、beforeEach()
和afterEach()
。它们会在指定时间执行。
describe('hooks', function() { before(function() { // 在本区块的所有测试用例之前执行 }); after(function() { // 在本区块的所有测试用例之后执行 }); beforeEach(function() { // 在本区块的每个测试用例之前执行 }); afterEach(function() { // 在本区块的每个测试用例之后执行 }); // test cases });
进入demo06
子目录,可以看到下面两个例子。首先是beforeEach
的例子beforeEach.test.js
。
// beforeEach.test.js describe('beforeEach示例', function() { var foo = false; beforeEach(function() { foo = true; }); it('修改全局变量应该成功', function() { expect(foo).to.be.equal(true); }); });
上面代码中,beforeEach
会在it
之前执行,所以会修改全局变量。
另一个例子beforeEach-async.test.js
则是演示,如何在beforeEach
之中使用异步操作。
// beforeEach-async.test.js describe('异步 beforeEach 示例', function() { var foo = false; beforeEach(function(done) { setTimeout(function() { foo = true; done(); }, 50); }); it('全局变量异步修改应该成功', function() { expect(foo).to.be.equal(true); }); });