Я использую мокко для поблочного тестирования JavaScript теперь.
У меня есть несколько тестовых файлов, каждый файл имеет a before
и beforeEach
, но они - точно то же.
Как я обеспечиваю глобальное before
и beforeEach
для всех них (или некоторые из них)?
от документация мокко †¦
РЫЧАГИ КОРНЕВОГО УРОВНЯ
можно также выбрать любой файл и добавить рычаги “root”-уровня. Например, добавьте, что beforeEach () за пределами всех описывают () блоки. Это заставит обратный вызов к beforeEach () работать перед любым тестовым сценарием, независимо от файла, он живет в (это вызвано тем, что Мокко имеет подразумеваемое, описывают () блок, названный “root комплектом
Весь постоянный клиент describe()
- комплекты сначала собраны и только [1 114] затем выполненный, этот вид гарантий это называемое сначала.
'use strict'
let run = false
beforeEach(function() {
if ( run === true ) return
console.log('GLOBAL ############################')
run = true
});
Удаляют флаг выполнения, если Вы хотите видеть, что он работает каждый раз перед каждым тестом.
я назвал этот файл test/_beforeAll.test.js
. Это не имеет никакой потребности, которая будет импортироваться/требоваться куда угодно, но .test.
(resp. .spec.
) в имени файла важно, так, чтобы Ваш testrunner выбрал его up†¦
mocha.opts
\o/ , Если существует материал, Вы действительно только хотите настроить однажды запущение Ваших тестов (независимо которые...), mocha.opts
удивительно изящная опция! †“Просто добавляют require
к Вашему файлу (да, даже если он способствует мало мокко, а скорее Вашей тестовой установке). Это будет работать надежно однажды:
(в этом примере я обнаруживаю, если единственный тест или много тестов собираются работать. В бывшем случае я произвел каждый log.info()
, в то время как на полном выполнении я уменьшаю многословие до error+warn...)
Обновление:
, Если кто-то знает путь, для доступа к некоторым основным свойствам комплекта мокко, который собирается быть выполненным в once.js
, я хотел бы знать и добавить здесь. (т.е. мой suiteMode
- обнаружение паршиво, если был другой способ обнаружить, сколько тестов должно быть run†¦)
В корне тестовой папки создайте глобального тестового помощника test/helper.js
, который имеет Ваш прежде и beforeEach
// globals
global.assert = require('assert');
// setup
before();
beforeEach();
// teardown
after();
afterEach();
Использование модули может помочь иметь глобальную установку/разрушение для Вашего набора тестов. Вот является использование в качестве примера 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's specify the unit under test
});
});
});