Вызов множественных описаний по требованию в цикле - PullRequest
0 голосов
/ 17 октября 2018

Итак, у меня много каталогов с тестовыми файлами и запускаю скрипт для каждого каталога в нем.Это выглядит так:

unitTests

- func1Tests

---- run.coffee

---- suiteGroup1.coffee

---- suiteGroup2.coffee

- func2Tests

---- run.coffee

---- suiteGroup1.coffee

---- suiteGroup2.coffee

Каждый файл run.coffee содержит код, подобный следующему:

describe 'func1 tests', ()->
  require './suiteGroup1.coffee'
  require './suiteGroup2.coffee'

А файлы suiteGroup - это тесты mocha BDD с описанием, до / после и этим.

Итак, в консоли я запускаю все тесты по команде с дикими символами (например, mocha ./unitTests/*/run.coffee)

Я хочу программно запустить все тесты, требуя, чтобы сценарии запускалисьих пути (пути, которые я получаю по шару).

describe 'All tests', ()->
  glob "unitTests/*/run.coffee", (err, files)->
    for path in files
      require path

Но это не работает.Я тоже попробовал это.

describe 'All tests', ()->
  glob "unitTests/*/run.coffee", (err, files)->
    require files[0]

Но это тоже не работает.Похоже, что mocha не выполняет описания в необходимом файле из-за использования glob.

Конечно, я могу просто написать скрипт bash с помощью консоли, но я бы предпочел решить это с помощью coffeescript.

Я бы также предпочел избегать жесткого кодирования всех путей выполнения, например:

describe 'all tests', ->
  require 'unitTests/func1Tests/run.coffee'
  require 'unitTests/func2Tests/run.coffee'
  ...

Итак, как решить эту проблему?

1 Ответ

0 голосов
/ 17 октября 2018

Ну, через некоторое время я нахожу разрешение.Моя вина была в использовании обратного вызова.Я изменил glob на glob.sync, и все работает отлично!

describe 'All tests', ()->
  for path in glob.sync "unitTests/*/run.coffee"
    require path

Похоже, что mocha плохо работает в асинхронном коде.

...