2013-03-22 42 views
1

這是我在Javacript第一次測試與摩卡/興農/柴,我不知道是否有可能做到這一點:測試回調事件觸發與興農的js之後調用

var obj = { 
    first : function() { 
     console.log('make job 1'); 
    } 
}; 

var objManager = function() { 
    $(document).on('event1', obj.first); 
}; 

new objManager(); 

var spy = sinon.spy(obj, 'first'); 

describe('Test', function() { 

    it('My first test', function() { 
     $(document).trigger('event1'); 
     spy.should.not.have.been.called; 
    }); 
}); 

我的間諜不叫,不明白爲什麼...我的函數「obj.first」已打印「做工1」。

如果我通過修改我的測試:

it('My first test', function() { 
    obj.first(); 
    spy.should.not.have.been.called; 
}); 

我的間諜之稱。 所以我的問題是:如何讓sinon間諜與事件一起工作?

回答

1

問題是,您首先將函數綁定到事件,然後用間諜替換obj中的函數。這樣做對您綁定到事件的功能沒有任何影響,因爲這仍然是原始功能。

測試這個,你必須先創建間諜,然後實例化你的objManager