2013-05-02 5 views
3

Я пытаюсь проверить немного JavaScript с использованием жасмин жасмин &-JqueryТестирование CSS Переход завершен в Jasmine

Так что я этот бит 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() 

Теперь я испытал это на странице и срабатывает нормально, но на runner он терпит неудачу, и даже console.log не запускается. Можете ли вы проверить переходы?

ответ

3

Эта причина неспособности работы jasmine.Clock не изменяет время или не требует проверки на 1000 мс. Он просто перезаписывает window.setTimeout. Поэтому всякий раз, когда вы вызываете setTimeout(someFunction, 1000), он сохраняет переданные функции и время. Затем, когда вы вызываете tick, он просто вызывает любые сохраненные функции со временем ниже, чем вы передали на вызов tick.

Таким образом, единственный способ протестировать событие transitionEnd - инициировать событие вручную. Также не имеет смысла тестировать, что событие запускается через определенное время, так как это поведение браузера, на которое вы полагаетесь.

+0

Ah ok thanks, tbh это функция, которую она запускает, но, возможно, я просто проведу функцию в изоляции. –

 Смежные вопросы

  • Нет связанных вопросов^_^