Глобальные `before` и` beforeEach` для мокко? - программирование
Подтвердить что ты не робот

Глобальные `before` и` beforeEach` для мокко?

Я использую mocha для модульного тестирования javascript.

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

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

4b9b3361

Ответ 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
    });
  });
});