在循环中通过 require 调用多个描述

Calling multiple describes by require in loop

所以我有很多目录,其中包含测试文件和每个目录的 运行 脚本。 这看起来像:

单元测试

--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 文件是 BDD mocha 测试,其中包含 describe、before/after 和 it。

所以在控制台中我 运行 所有测试都是通过带有通配符的命令进行的(例如 mocha ./unitTests/*/run.coffee)

我想以编程方式 运行 通过要求 运行 脚本的路径(我通过 glob 获得的路径)来进行所有测试。

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]

但这也行不通。由于使用了 glob,似乎 mocha 没有执行所需文件中的描述。

当然我可以用控制台命令写bash脚本,但我更喜欢用coffeescript来解决这个问题。

我也希望避免像这样对所有 运行 路径进行硬编码:

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

那么,如何解决这个问题呢?

好吧,一段时间后我找到了解决办法。 我的错是在使用回调。我将 glob 更改为 glob.sync 并且一切正常!

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

mocha 似乎在异步代码下运行不佳。