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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过require in循环调用多个描述相关的知识,希望对你有一定的参考价值。

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

单元测试

--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'
  ...

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

答案

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

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

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

以上是关于通过require in循环调用多个描述的主要内容,如果未能解决你的问题,请参考以下文章

nodejs常用代码片段

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始

如何一个接一个地打开同一片段但具有不同数据的多个实例?

如何让片段中的多个视图调用片段类中声明的相同 onClick 函数?

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

循环调用同一个虚函数的开销