在循环中通过 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 似乎在异步代码下运行不佳。
所以我有很多目录,其中包含测试文件和每个目录的 运行 脚本。 这看起来像:
单元测试
--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 似乎在异步代码下运行不佳。