Глобальные `before` и` beforeEach` для мокко?
Я использую mocha для модульного тестирования javascript.
У меня есть несколько тестовых файлов, каждый файл имеет before
и beforeEach
, но они точно такие же.
Как предоставить глобальные before
и beforeEach
для всех из них (или некоторые из них)?
Ответы
Ответ 1
Объявите 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'
Ответ 2
В корневой папке теста создайте глобальный тестовый помощник test/helper.js
, у которого есть ваши до и перед каждым
// globals
global.assert = require('assert');
// setup
before();
beforeEach();
// teardown
after();
afterEach();
Ответ 3
Использование модулей может облегчить глобальную настройку/отключение вашего тестового набора. Ниже приведен пример использования RequireJS (модулей AMD):
Сначала давайте определим тестовую среду с нашей глобальной установкой/отключением:
// 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-бегуне (включенном в бегун HTML-мокко, по другим библиотекам и тестовым файлам, как <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 specify the unit under test
});
});
});