我有在茉莉花茉莉花間諜沒有被調用
一些麻煩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