我有一个 1 秒的 jQuery.animate
操作,在页面加载后 5 秒启动。我在我的 Jasmine 单元测试代码中设置了一个 Sinon 计时器,并在 7 秒的滴答声后进行测试,以查看动画后的属性是否与它们应有的一样。
它不能正常工作,因此我在 Jasmine HTML 测试页面上放置了动画本身的一个实例,以便更好地了解发生了什么。
在 Firefox 和 Chrome 中,页面加载,动画函数被调用,单元测试立即失败,然后(也立即)动画可见。
在 IE、Opera 和 Safari 中,页面加载,动画函数被调用,单元测试立即失败,动画从不可见。
我希望的是以下(在所有浏览器中):
- 页面加载完毕,调用动画函数,动画瞬间完成,单元测试立即成功。
查看Sinon的文档,它的假计时器涵盖了以下过程:
setTimeout
, clearTimeout
, setInterval
, clearInterval
,Date
我不知道 jQuery 的动画是如何工作的,但我想它是使用 CSS 来过渡的,而 CSS 过渡并没有包含在 Sinon 中useFakeTimers
,所以我想这就是问题所在。但是,如果我对这个问题是正确的,我仍然需要一个解决方案。
或许我应该试试诗乃以外的东西?Jasminewaits()
在这个测试中表现完美,但对于像我这样没有耐心的人来说非常不切实际。
还有其他建议吗?请记住,我是 JS 单元测试的新手,所以模糊的答案会让我感到困惑,而不是帮助我。;o)