我有在茉莉花茉莉花间谍没有被调用
一些麻烦implimenting刺探我要检查,如果一个链接被点击上使用间谍茉莉花和茉莉花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')
}
spec文件:
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();
});
所以我的问题本质上是:
- 我是测试在错误的方式这种类型的东西?
- 为什么间谍没有注册该方法被调用的事实?
我在这种情况下想你应该*对样机谍*:'spyOn (Slider.prototype,'handleClick')',并把这个代码放在'Slider'创建'新Slider(...)'之前(如@EliranMalka所评论的)。你试过这个吗? – zbynour