Javascript 测试CSS转换在Jasmine中完成
我正在尝试使用jasmine和jasmine jquery测试一些JavaScript 所以我在函数中使用了一些JavascriptJavascript 测试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
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是它触发的函数,但也许我将单独测试该函数。