我有一个 1 秒的 jQuery .animate
Action ,它在页面加载后 5 秒启动。我在我的 Jasmine 单元测试代码中设置了一个 Sinon 计时器,并在 7 秒后进行测试,以查看后动画属性是否符合预期。
它不能正常工作,所以我在我的 Jasmine HTML 测试页面上放置了一个动画实例,以便更好地查看发生了什么。
在 Firefox 和 Chrome 中,页面加载,动画函数被调用,单元测试立即失败,然后(也是立即)动画可见。
在 IE、Opera 和 Safari 中,页面加载,动画函数被调用,单元测试立即失败,动画永远不会出现。
我希望的是以下内容(在所有浏览器中):
- 页面加载,调用动画函数,动画瞬间完成,单元测试立即成功。
查看Sinon's documentation ,它的假定时器涵盖以下过程:
setTimeout
, clearTimeout
, setInterval
, clearInterval
, 日期
我不知道 jQuery 的动画是如何工作的,但我想它是使用 CSS 进行过渡,而 Sinon 的 useFakeTimers
中没有涵盖 CSS 过渡,所以我想这就是问题所在。但是,如果我对问题的看法是正确的,我仍然需要一个解决方案。
也许我应该试试诗乃以外的东西? Jasmine 的 waits()
在此测试中表现完美,但对于像我这样不耐烦的人来说非常不切实际。
还有其他建议吗?请记住,我是 JS 单元测试的新手,所以模糊的答案会让我感到困惑而不是帮助我。 ;o)
最佳答案
关于javascript - 如何在 Jasmine 单元测试中使用 Sinon 模拟 jQuery 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7324043/