gpt4 book ai didi

javascript - 有没有办法用假计时器运行 Ember.Testing 验收测试?

转载 作者:行者123 更新时间:2023-11-28 01:03:37 27 4
gpt4 key购买 nike

我正在 EmberJS 中开发一个项目,该项目有一组验收测试(带有 EmberJS 帮助程序的 qUnit)。现在,我正在尝试尽可能优化这些测试,因为每次运行等待 10 分钟并不好。

我们实际上需要等待一些事情发生的一些测试:计时器耗尽、时钟更新一分钟等等。

我尝试将 sinonjs 与 faketimers 一起使用,但这似乎会扰乱 ember 运行循环以及与应用程序或测试相关的 setInterval/setTimeout 的任何其他用法。

我正在寻找一种将测试与此类功能集成的方法。我会考虑的选项是:

  • 将补丁打入Ember/Ember.Testing 或Sinon
  • 使用另一种 faketimer 方法(除了 sinon)
  • 手动伪造日期对象以处理某种非侵入式伪造计时器

现在,我想肯定有人已经面对过这个问题,所以在我得出任何结论之前,我需要问:针对这种情况是否有推荐的方法?

谢谢!

最佳答案

我们针对此问题的特殊解决方案是将常量值从 Controller /路由中提取出来,并将其放入应用程序的命名空间中,然后在测试期间更改它。

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

关于javascript - 有没有办法用假计时器运行 Ember.Testing 验收测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com