Javascript 测试CSS转换在Jasmine中完成

Javascript 测试CSS转换在Jasmine中完成,javascript,jquery,jasmine,jasmine-jquery,Javascript,Jquery,Jasmine,Jasmine Jquery,我正在尝试使用jasmine和jasmine jquery测试一些JavaScript 所以我在函数中使用了一些Javascript trackTransition = ()-> $("#test").on "transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd", ()-> console.log "trans End" 我在spec.css中应用了一些样式,它们添加了一个css转换,并在f

我正在尝试使用jasmine和jasmine jquery测试一些JavaScript

所以我在函数中使用了一些Javascript

trackTransition = ()->
  $("#test").on "transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd", ()-> 
    console.log "trans End"
我在spec.css中应用了一些样式,它们添加了一个css转换,并在fixture中添加了一些html,然后在jasmine规范中添加了如下内容:

   describe "Checks when animation finished", ->
      beforeEach ->
        @trans = spyOnEvent('#test', 'transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd')
        jasmine.Clock.useMock()
        trackTransition()

      it "Should check when transition ended", ->
        expect(@trans).not.toHaveBeenTriggered()
        jasmine.Clock.tick(1001)
        expect(@trans).toHaveBeenTriggered()

现在我已经在页面上对此进行了测试并启动了,但是在runner上它失败了,甚至console.log也没有运行。你能测试一下转换吗

这无法工作,因为jasmine.Clock不会更改时间或使测试等待1000毫秒。它只是覆盖了
窗口。setTimeout
。因此,无论何时调用
setTimeout(someFunction,1000)
它都会保存传递的函数和时间。然后,当您调用
tick
时,它只调用任何保存的函数,其时间低于您传递给
tick
调用的时间


因此,测试transitionEnd事件的唯一方法是手动触发该事件。此外,测试事件是否在特定时间后触发也没有多大意义,因为这是您所依赖的浏览器行为。

啊,好的,谢谢,tbh是它触发的函数,但也许我将单独测试该函数。