Mocha.js 在mocha中描述的循环基于在before块中的设置
我试图从google spread中的决策表动态创建测试,如下所示:Mocha.js 在mocha中描述的循环基于在before块中的设置,mocha.js,Mocha.js,我试图从google spread中的决策表动态创建测试,如下所示: describe "Dynamic test", -> rules = [1] # add a dummy element to see something in logs before (done) -> Tabletop.init( key: 'the google spreadsheet key' callback: (data,
describe "Dynamic test", ->
rules = [1] # add a dummy element to see something in logs
before (done) ->
Tabletop.init(
key: 'the google spreadsheet key'
callback: (data, tabletop) ->
decisionTable = createTable(data)
rules = extractRulesFromDesicionTable(decisionTable)
console.log 'rules created'
done()
simpleSheet: true)
for rule in rules
do (rule) ->
describe rule.name, ->
console.log "describing rule"
it 'should be nice', ->
true.should.be.ok
问题是,在创建规则之前,描述规则
会被记录下来
有没有办法完成我在这里要做的事情
问题是描述规则在创建规则之前就被记录下来了
是的,摩卡咖啡就是这样设计的。事件的顺序是:
调用您的外部描述。它立即调用其匿名函数
调用
之前的。这将注册传递给它的回调,以便将来执行
将执行规则中规则的循环
在执行
之前传递给的回调。请注意,此时调用description
或it
已经太晚了。(摩卡咖啡可能会接受这些电话,在某些情况下,它可能会做你想做的事情,但实际上这是一种未定义的行为。如果它起作用,那就是运气。)
一般规则是立即执行传递给descripe
的回调。传递到钩子(之前
,之前
,等等)或测试(it
)的回调将在稍后执行。(我有一份关于执行令细节的报告。)
我看不到一个简单的解决方案,你想做什么。您正在尝试生成测试,这通常不是问题,只要它是同步完成的。(我已经做过很多次了,例如通过使用节点的同步fs
调用来读取一组文件。)没有异步执行的规定。我想你必须这样做。谢谢!从它看来,您无法传递--compilers coffee:coffee script/register
参数,所以我不敢使用它:)但是,首先构造一个rules.js
文件,然后运行mocha同步读取该文件就像一个符咒:coffee./test/create-dynamic-rules.coffee--nodejs&./node_modules/.bin/mocha./test/dynamic-test.coffee--compilers coffee:coffee脚本/寄存器--15000超时