我正在写一个流星包,正在写一些单元测试。该软件包包含一些模板,因此我也想测试模板。该模板有一个onRendered钩子。在我的单元测试中,我调用函数Blaze.renderWithData来呈现我想要测试的模板。我希望这个函数调用onRendered钩子。但事实并非如此。
我用茉莉花进行单元测试。测试代码如下:
for i in [0...tests.length]
oneGroupTests = tests[i]
describe oneGroupTests.name, ->
for i in [0...oneGroupTests.tests.length]
test = oneGroupTests.tests[i]
do (test) ->
it test.name, ->
expect(test.template).toBeDefined()
expect(test.test).toBeDefined()
div = document.createElement("div")
Blaze.renderWithData(Template[test.template], test.data, div)
if test.before
test.before($(div))
test.test($(div))
$(div).remove()
知道如何以编程方式调用onRendered钩子吗?
感谢。
答案 0 :(得分:0)
如果您的Tracker.flush()
例程被解雇,请在测试前尝试调用onRendered
。在这里查看更多详细信息:
http://docs.meteor.com/#/full/tracker_flush
您遇到此问题的原因可能是回调不是立即触发,而是仅在下一次"计算"周期。
http://docs.meteor.com/#/full/tracker_computation
调用Tracker.flush()
将强制Meteor重新计算所有待处理的计算。