【问题标题】:Calling multiple describes by require in loop在循环中通过require调用多个描述
【发布时间】:2019-03-22 06:53:37
【问题描述】:

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

单元测试

--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 文件是带有 describe、before/after 和 it 的 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]

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

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

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

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

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

【问题讨论】:

    标签: javascript coffeescript mocha.js qa


    【解决方案1】:

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

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

    似乎 mocha 在异步代码下效果不佳。

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多