2015-10-29 2 views
0

У меня есть этот код:Unit-тестирование JavaScript/JQuery события с Жасмин

$(document).on('click', '#clear-button', clearCalculatedPrice) 

clearCalculatedPrice = -> 
    $('#price_rule').removeAttr('data-original-title') 
    $('#calculated-price').removeAttr('data-original-title') 
    $('#calculated-price').empty() 

И такое испытание для его

describe 'Call taker', -> 
    it 'should clear calculated price', -> 
    spyOn($.fn, 'removeAttr') 
    spyOn($.fn, 'empty') 
    clearCalculatedPrice() 
    expect($.fn.removeAttr).toHaveBeenCalled() 
    expect($.fn.empty).toHaveBeenCalled() 

Мне нужно создать еще один тест, который будет проверять, что функция была вызвана, когда событие было вызвано, например,

 it 'should clear calculated price when "click" event is triggered', -> 
     $('#destination-clear-button').trigger('click') 
     spyOn($.fn, 'removeAttr') 
     spyOn($.fn, 'empty') 
     expect($.fn.removeAttr).toHaveBeenCalled() 
     expect($.fn.empty).toHaveBeenCalled() 

Но этот тест не работает, как я думал. Так вопрос: Как следует блок-тест, который проверяет обработчик события должен быть написан

ответ

1

Возможно заказать звонки плохо

it 'should clear calculated price when "click" event is triggered', -> 
    # set spys 
    spyOn($.fn, 'removeAttr') 
    spyOn($.fn, 'empty') 
    # trigger 
    $('#destination-clear-button').trigger('click') 
    # check 
    expect($.fn.removeAttr).toHaveBeenCalled() 
    expect($.fn.empty).toHaveBeenCalled()