通过require in循环调用多个描述

问题描述 投票:0回答:1

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

单元测试

--func1Tests

---- 润.coffee

---- suite group1.coffee

---- suite group2.coffee

--func2Tests

---- 润.coffee

---- suite group1.coffee

---- suite group2.coffee

每个run.coffee包含如下代码:

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

而suiteGroup文件是带有describe,之前/之后的BDD mocha测试。

所以在控制台中我通过带有狂野字符的命令运行所有测试(例如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]

但这也行不通。似乎mocha因为使用glob而没有在所需文件中执行描述。

当然我可以用console命令编写bash脚本,但我更希望通过coffeescript解决这个问题。

我也希望避免硬编码所有运行路径,如下所示:

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

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

javascript coffeescript mocha qa
1个回答
0
投票

好吧,过了一段时间我找到了解决方案。我的错是使用回调。我把glob改成了glob.sync,一切都很完美!

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

似乎mocha在异步代码下不能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.