Выполнить асинхронный код перед полным тестом mocha

Я ищу способ запуска асинхронного кода перед всем тестом мокко.

Вот пример теста, который использует массив аргументов и ожиданий и циклически обрабатывает все элементы в этом массиве для получения утверждений функций.

var assert = require('assert')

/* global describe, it*/

var fn = function (value) {
  return value + ' ' + 'pancake'
}

var tests = [
  {
    'arg': 'kitty',
    'expect': 'kitty pancake'
  },
  {
    'arg': 'doggy',
    'expect': 'doggy pancake'
  },
]

describe('example', function () {
  tests.forEach(function (test) {
    it('should return ' + test.expect, function (){
      var value = fn(test.arg)
      assert.equal(value, test.expect)
    })
  })
})

Теперь мой вопрос заключается в том, как бы это работало, если бы значения тестов исходили из обещания, например:

var assert = require('assert')
var Promise = require('bluebird')

/* global describe, it*/

var fn = function (value) {
  return value + ' ' + 'pancake'
}

function getTests () {
  return Promise.resolve('kitty pancake')
  .delay(500)
  .then(function (value) {
    return [
      {
        'arg': 'kitty',
        'expect': value
      },
      {
        'arg': 'doggy',
        'expect': 'doggy pancake'
      }
    ]
  })
}

getTests().then(function (tests) {
  describe('example', function () {
    tests.forEach(function (test) {
      it('should return ' + test.expect, function (){
        var value = fn(test.arg)
        assert.equal(value, test.expect)
      })
    })
  })  
})

также попробовал:

describe('example', function () {
  getTests().then(function (tests) {
    tests.forEach(function (test) {
      it('should return ' + test.expect, function (){
        var value = fn(test.arg)
        assert.equal(value, test.expect)
      })
    })
  })
})

Однако в этом примере ни один из тестов не выполняется, потому что mocha не распознает оператор description, потому что он находится внутри обещания.

before / beforeEach не будет делать ничего, чтобы помочь с тестом в формате, если толькоbeforeTest ловушка, которая дала бы mocha знание о том, что есть асинхронная операция, которую нужно выполнить перед всем тестом.

Ответы на вопрос(1)

Ваш ответ на вопрос