2013-03-22 1 views
1
그것은 모카/Sinon/차이와 Javacript에 내 첫 번째 테스트의

그리고이 할 수 있다면 나도 몰라 :테스트 콜백

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"을 인쇄했다.

I에 의해 내 테스트를 수정하는 경우 :

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

내 스파이가 호출됩니다. 제 궁금한 점은 : 사인 스파이가 이벤트와 어떻게 작동하게합니까?

답변

1

문제는 먼저 이벤트에 함수를 바인딩 한 다음 obj의 함수를 스파이로 바꾸는 것입니다. 이렇게하면 원래 함수이기 때문에 이벤트에 바인딩 한 함수에 아무런 영향을 미치지 않습니다.

objManager을 인스턴스화하기 전에 스파이를 만들어야하는지 테스트 해보십시오.