У меня возникли некоторые неприятности implimenting шпионаж в Jasmineжасмин шпионы не называют
Я хочу, чтобы проверить, если ссылка была нажата на ползуне с помощью шпиона жасмин и жасмин JQuery.
Вот упрощенная версия:
У меня есть несколько ссылок, как часть файла HTML арматуры.
<a href="#" class="someLink">Link 1</a>
<a href="#" class="someLink">Link 2</a>
слайдер:
var Slider = function(links){
this.sliderLinks = $(links);
this.bindEvents();
}
Slider.prototype.bindEvents = function(){
this.sliderLinks.on('click', this.handleClick);
}
Slider.prototype.handleClick = function(e){
console.log('i have been clicked')
}
спецификации файла:
describe('Slider', function(){
var slider;
beforeEach(function(){
loadFixtures('slider.html');
slider = new Slider('.someLink');
});
it('should handle link click', function(){
spyOn(slider, 'handleClick');
$(slider.sliderLinks[0]).trigger('click');
expect(slider.handleClick).toHaveBeenCalled();
});
});
Тест терпит неудачу. Но «я был нажат» был зарегистрирован на консоли, поэтому метод вызывается.
Если я это сделаю тест пройден, хотя:
it('should handle link click', function(){
spyon(slider, 'handleClick');
slider.handleClick();
expect(slider.handleClick).toHaveBeenCalled();
});
Так что мой вопрос по существу является:
- Am я тестирование для такого рода вещи в неправильном направлении?
- Почему шпион не регистрирует тот факт, что метод был вызван?
Я думаю, в этом случае вы должны * Шпион на прототипе *: 'spyOn (Slider.prototype, 'handleClick') 'и поместите этот код перед созданием' Slider' 'нового слайдера (...)' (как прокомментировал @EliranMalka). Вы пробовали это? – zbynour