是否建议为单元测试设置Ember.testing = true?

Rob*_*nie 8 ember.js

我们最近开始在我们的茉莉花规格中使用未记录的Ember.testing标志,这有效地禁用了自动运行runloop功能.我们发现这需要我们更加明确地在runloops中手动包装代码,但是在我们的规范中也给了我们更多的稳定性,因为它突出了我们编写规范的方式中的问题并且有助于记录何时绑定对于被测代码很重要.

关于此功能的使用是否有官方说明?它似乎对我们的应用程序产生了相当积极的影响,但我怀疑大多数人都不知道它.

Jo *_*iss 7

是的,你一定要Ember.testing = true在你的测试中设置.

没有Ember.testing,runloops会自动安排setTimeout,这是你注意到的不稳定性的来源.

注意:此时,当您激活时Ember.testing,您必须最终为测试代码中的许多行添加前缀Em.run =>,例如

Em.run => obj.set('someProperty', true)
Run Code Online (Sandbox Code Playgroud)

如果您忘记了,它会大声抱怨,或者当您尝试对其运行断言时,属性/应用程序状态将不会更新.

也许这会在某一天得到改善,但是现在如果您的测试代码中充满了run电话,则无需担心.


ebr*_*ryn -1

我从来没有用过这个Ember.testing标志。我很想知道启用它如何使您的规格更加稳定。我一直在 Jasmine 中测试 Ember 应用程序,没有任何问题。

我在必要时使用了 Ember 测试套件并取得了Ember.run()成功Ember.run.sync()。

  • 我们遇到了许多间歇性故障,因为有时在我认为它们应该一直失败的地方通过了规范。设置 Ember.testing = true 确保这些规范始终失败。 (2认同)