2016-07-10 3 views
5

나는이 방법을 시험하기위한 가장 좋은 방법을 알아 내려고 노력 해요 :Mocha & Sinon에서 document.addEventListener ('keydown', cb)를 테스트하는 방법은 무엇입니까?

document.addEventListener("keydown", function (event) { 
    var modifiers = event.altKey || event.ctrlKey || event.metaKey || 
        event.shiftKey; 
    var mapped = map[event.which]; 

    if (!modifiers) { 
     if (mapped !== undefined) { 
     event.preventDefault(); 
     self.emit("move", mapped); 
     } 
    } 
    }); 

내가 확인하고 싶습니다를 그 키를 수정하거나 키가 매핑되지 않은 경우, 아무것도 경우, 그러나,이 발생하지 않는 경우 그들은 self.emit 기능에 간첩이다.

답변

0

죄송합니다. 내 경우

it('adds listener events', function() { 
    sinon.spy(document, 'addEventListener') 
    sinon.spy(window, 'addEventListener') 

    expect(document.addEventListener.calledOnce).not.to.be.true 
    expect(window.addEventListener.calledOnce).not.to.be.true 

    subject.myFunc() 

    expect(document.addEventListener.calledOnce).to.be.true 
    expect(window.addEventListener.calledOnce).to.be.true 
}) 

내가 예를 들어 창 focus 및 문서 click를 테스트했다 : 여기 내 솔루션입니다.

희망 하시겠습니까?

+0

이것은 OP가 테스트하고 싶은 것을 테스트하지 않습니다. 이것은'addEventListener'가 호출되었는지 여부를 테스트하는 것입니다. OP는'addEventListener'로 추가 된 이벤트 핸들러의 동작을 테스트하려고합니다. – Louis

+0

그래서 리스너에서 호출 된 func에 대한 또 다른 분리 된 테스트를 수행했습니다. 그건 쉽게 일어날 수있는 방법 이었어. – lucianosousa