【问题标题】:How can I unit test JavaScript that will executed after the CSS transitionEnd event如何对将在 CSS transitionEnd 事件后执行的 JavaScript 进行单元测试
【发布时间】:2012-09-05 13:10:00
【问题描述】:

我有引导模式窗口。使用 qunit+sinonjs(假计时器),一个元素留在页面上(div class='modal-backdor'):

查看twitter-bootstrap (line 95),触发了一个transitionEnd 事件。如何测试事件触发后将执行的代码?

【问题讨论】:

    标签: javascript css css-transitions qunit sinon


    【解决方案1】:

    问题在于this.clock.tick(1000); 不会让您的测试代码等待 1000 毫秒,而是调用此时应该发生的所有 JavaScript setTimeouts。因此,在您的情况下,启动动画,this.clock.tick(1000); 将无效,因为动画仍将持续 1000 毫秒。您正在寻找像 Jasmines waits() 这样的东西,它会在过去一段时间内停止执行下面的所有测试代码。似乎 qunit 和 sinon 没有等价物。

    顺便说一句。您要做的更多的是验收测试,而不是单元测试。你应该关注mocking your DOM element,这样你就可以在你的测试中触发transitionEnd事件,而不是开始一个真正的动画。同样启动动画并等待将在非常长时间运行的单元测试中结束。所以在我最新的项目中,我们有大约 200 个测试用例,它们将运行 1-2 秒。因此,请考虑在您开始在测试中使用waits 时需要多长时间。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      相关资源
      最近更新 更多