Глобальный 'прежде' и 'beforeEach' для мокко?

Я использую мокко для поблочного тестирования JavaScript теперь.

У меня есть несколько тестовых файлов, каждый файл имеет a before и beforeEach, но они - точно то же.

Как я обеспечиваю глобальное before и beforeEach для всех них (или некоторые из них)?

62
задан 12 May 2012 в 10:31

3 ответа

от документация мокко †¦

РЫЧАГИ КОРНЕВОГО УРОВНЯ

можно также выбрать любой файл и добавить рычаги “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†¦

<час>

бонус трек 8-): с помощью mocha.opts \o/

, Если существует материал, Вы действительно только хотите настроить однажды запущение Ваших тестов (независимо которые...), mocha.opts удивительно изящная опция! †“Просто добавляют require к Вашему файлу (да, даже если он способствует мало мокко, а скорее Вашей тестовой установке). Это будет работать надежно однажды:

enter image description here

(в этом примере я обнаруживаю, если единственный тест или много тестов собираются работать. В бывшем случае я произвел каждый log.info(), в то время как на полном выполнении я уменьшаю многословие до error+warn...)

Обновление:

, Если кто-то знает путь, для доступа к некоторым основным свойствам комплекта мокко, который собирается быть выполненным в once.js, я хотел бы знать и добавить здесь. (т.е. мой suiteMode - обнаружение паршиво, если был другой способ обнаружить, сколько тестов должно быть run†¦)

28
ответ дан 31 October 2019 в 13:45

В корне тестовой папки создайте глобального тестового помощника test/helper.js, который имеет Ваш прежде и beforeEach

// globals
global.assert = require('assert');

// setup
before();
beforeEach();

// teardown
after();
afterEach();
78
ответ дан 31 October 2019 в 13:45

Использование модули может помочь иметь глобальную установку/разрушение для Вашего набора тестов. Вот является использование в качестве примера 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
    });
  });
});
-1
ответ дан 31 October 2019 в 13:45