【问题标题】:Meteor, calling Blaze.renderWithData does not trigger onRendered hookMeteor,调用 Blaze.renderWithData 不会触发 onRendered 钩子
【发布时间】:2015-08-15 21:33:12
【问题描述】:

我正在编写一个流星包,并正在对其进行一些单元测试。该包包含一些模板,所以我也想测试这些模板。该模板有一个 onRendered 钩子。在我的单元测试中,我调用函数 Blaze.renderWithData 来渲染我想要测试的模板。我希望这个函数调用 onRendered 钩子。然而,事实并非如此。

我使用 jasmine 进行单元测试。测试代码如下:

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 钩子吗?

谢谢。

【问题讨论】:

    标签: unit-testing meteor meteor-blaze


    【解决方案1】:

    在测试您的onRendered 例程是否已触发之前,请尝试调用Tracker.flush()。更多详情请看这里:

    http://docs.meteor.com/#/full/tracker_flush

    您遇到此问题的原因可能是回调没有立即触发,而是仅在下一个“计算”周期中触发。

    http://docs.meteor.com/#/full/tracker_computation

    调用 Tracker.flush() 将强制 Meteor 重新计算所有待处理的计算。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2021-09-13
    • 1970-01-01
    • 2016-02-04
    • 2019-12-31
    相关资源
    最近更新 更多