全球`之前`和`beforeEach`为摩卡?
我现在正在使用摩卡进行javascriptunit testing。
我有几个testing文件,每个文件都有一个before
和beforeEach
,但是它们是完全一样的。
我如何before
所有人(或其中的一些人) before
和before
提供一个全球性的?
声明一个before
或beforeEach
在一个单独的文件(我使用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 }); }); });