我们最近开始在我们的茉莉花规格中使用未记录的Ember.testing标志,这有效地禁用了自动运行runloop功能。我们发现这需要我们更加明确地在runloops中手动包装代码,但是在我们的规范中也给了我们更多的稳定性,因为它突出了我们编写规范的方式中的问题并且有助于记录何时绑定对于被测代码很重要。
关于此功能的使用是否有官方路线?它似乎对我们的应用产生了相当积极的影响,但我怀疑大多数人都不知道它。
答案 0 :(得分:7)
是的,你一定要在测试中设置Ember.testing = true
。
如果没有Ember.testing
,则会自动使用setTimeout
安排runloops,这是您注意到的不稳定性来自的地方。
注意:目前,当您激活Ember.testing
时,您必须以Em.run =>
为测试代码中的许多行添加前缀,例如
Em.run => obj.set('someProperty', true)
如果您忘记了,它会大声抱怨,或者当您尝试对其运行断言时,属性/应用状态不会更新。
也许这会在某一天得到改善,但是现在如果您的测试代码中添加了run
次调用,则无需担心。
答案 1 :(得分:-1)
我从未使用Ember.testing
标志。我很想知道如何启用它可以使您的规格更加稳定。我一直在Jasmine测试Ember应用程序,没有任何问题。
我已经成功遵循Ember测试套件在必要时使用Ember.run()
和Ember.run.sync()
。