全球`之前`和`beforeEach`为摩卡?

我现在正在使用摩卡进行javascriptunit testing。

我有几个testing文件,每个文件都有一个beforebeforeEach ,但是它们是完全一样的。

我如何before所有人(或其中的一些人) beforebefore提供一个全球性的?

声明一个beforebeforeEach在一个单独的文件(我使用spec_helper.coffee )并要求它。

spec_helper.coffee

 afterEach (done) -> async.parallel [ (cb) -> Listing.remove {}, cb (cb) -> Server.remove {}, cb ], -> done() 

test_something.coffee

 require './spec_helper' 

在testing文件夹的根目录下,创build一个全局testing帮助器test/helper.js ,其中包含before和beforeEach

 // globals global.assert = require('assert'); // setup before(); beforeEach(); // teardown after(); afterEach(); 

使用模块可以使testing套件的全局设置/拆卸更容易。 以下是使用RequireJS(AMD模块)的示例:

首先,让我们用我们的全局设置/拆卸定义一个testing环境:

 // test-env.js define('test-env', [], function() { // One can store globals, which will be available within the // whole test suite. var my_global = true; before(function() { // global setup }); return after(function() { // global teardown }); }); 

在我们的JS运行器(包含在mocha的HTML运行器中,沿着其他库和testing文件,作为<script type="text/javascript">…</script> ,或者更好,作为外部JS文件):

 require([ // this is the important thing: require the test-env dependency first 'test-env', // then, require the specs 'some-test-file' ], function() { mocha.run(); }); 

some-test-file.js可以这样实现:

 // some-test-file.js define(['unit-under-test'], function(UnitUnderTest) { return describe('Some unit under test', function() { before(function() { // locally "global" setup }); beforeEach(function() { }); afterEach(function() { }); after(function() { // locally "global" teardown }); it('exists', function() { // let's specify the unit under test }); }); });