2015-06-05 4 views
0

У меня есть следующие javascript-тест Jasmine для тестирования вызова функции неисправного

function changeSelectBoxTitle() { 
    var value = $('#reason_id').find('option:selected').text(); 
    $('#reason_id').attr('title', value); 
} 

$(document).on('change', '#reason_id', function() { 
    changeSelectBoxTitle(); 
}); 

В основном на изменении поля выбора функция changeSelectBoxTitle() должна быть вызвана. Тестирование его через UI проходит. Я пытаюсь проверить этот вызов через жасмин. Это мой жасмин тест-

describe('when select box value is changed', function() { 
    it('calls the changeSelectBoxTitle function', function() { 
     spyOn(window, 'changeSelectBoxTitle'); 
     var $dropDown = $('#reason_id'); 
     $dropDown.change(); 
     expect(window.changeSelectBoxTitle).toHaveBeenCalled(); 
    }); 
}); 

Все выглядит хорошо. но тест терпит неудачу. Понятия не имею почему. Может кто-то указать мне верное направление?

+0

Код выглядит хорошо. Я бы посмотрел на более простые вещи, например, в тесте, у раскрывающегося списка $ действительно есть элемент, выбранный? Должно быть, что-то происходит неправильно в другом месте, возможно, в вашей настройке. – eck

ответ

1

Как @eck сказал в комментарии ниже вашего вопроса, нет ничего плохого в вашем коде, и сбой теста обусловлен установкой теста.

Добавление следующий HTML элемент в вашей установки позволит тест пройти

<select id="reason_id" class="" name=""> 
    <option selected value="One">One</option> 
    <option value="Two">Two</option> 
    </select> 

Смотрите эту jsfiddle, где ваш тест проходит.

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