我正在EmberJS的一个项目上工作,该项目有一组验收测试(qUnit和EmberJS助手)。现在,我试图尽可能地优化这些测试,因为每次运行等待10分钟并不好。
我们实际需要等待一些事情发生的一些测试:计时器用完,一分钟传递时钟更新等等。
我尝试将sinonjs与假冒者一起使用,但这似乎搞乱了ember运行循环以及与应用程序或测试相关的setInterval / setTimeout的任何其他用法。
我正在寻找一种将测试与此类功能集成的方法。我会考虑的选项是:
现在,我想有人必须已经面对这个问题,所以在我得出任何结论之前我需要问一下:这种情况是否有建议的方法?
谢谢!
答案 0 :(得分:1)
我们对此问题的特殊解决方案是将常量值从控制器/路由中拉出并将其放入App的命名空间,然后在测试期间更改它。
App = Em.Application.create({
someTimerLength:2000
});
// if testing mode, change a ton of things
// you could also use a different config hash when creating the app
if(Ember.testing){
Em.set(App,'someTimerLength', 1);
}
Ember.run.later(function(){
resolve(['red', 'yellow', 'blue']);
}, App.someTimerLength);
这是一个丑陋的例子,但展示了我们如何做到:http://emberjs.jsbin.com/wipo/41/edit