2013-05-02 54 views
3

我想用茉莉花&茉莉花jQuery來測試一些JavaScript完成測試CSS轉型茉莉花

所以我在功能該位的Javascript

trackTransition =()-> 
    $("#test").on "transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd",()-> 
    console.log "trans End" 

我已經申請了一些在spec.css麥粒腫是添加CSS過渡,並添加一些HTML到夾具,然後在茉莉花規格添加像這樣:

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() 

現在我已經測試了這個網頁上,併火沒有問題,但是在跑步者上失敗了,甚至console.log也沒有運行。你可以測試過渡嗎?

回答

3

這個不能工作的原因jasmine.Clock不會改變時間或使測試等待1000ms。它只是覆蓋window.setTimeout。所以只要你打電話setTimeout(someFunction, 1000)它保存了傳遞的功能和時間。然後,當您撥打tick時,它只會調用所有保存的功能,時間會低於您傳遞給tick的呼叫。

因此,測試您的transitionEnd事件的唯一方法是手動觸發事件。此外,測試事件是否在特定時間後觸發沒有多大意義,因爲這是您依賴的瀏覽器行爲。

+0

好的,謝謝,tbh它是它觸發的函數,但也許我只是單獨測試函數。 – 2013-05-03 06:59:14