2013-03-22 4 views
1

Это мой первый тест на Javacript с мокко/Sinon/Chai И я не знаю, если это возможно сделать это:Тестирование обратного вызова вызывается после триггера событий с Sinon 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» напечатала «make job 1».

если я изменить мой тест по:

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

Мой шпион называется. Итак, мой вопрос: как заставить шпиона синонов работать с событием?

ответ

1

Проблема в том, что вы сначала привязываете функцию к событию, а затем заменяете функцию в obj шпионом. Это не повлияет на функцию, связанную с событием, потому что это все еще оригинальная функция.

Протестируйте это, вы должны создать шпиона, прежде чем создавать свой objManager.