2016-07-10 68 views
5

Ben bu yöntemi test etmek için en iyi yolu anlamaya çalışıyorum:document.addEventListener ('keydown', cb) Mocha & Sinon ile nasıl test edilir?

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); 
     } 
    } 
    }); 

Ben sağlamak istediğinizi tuşları değiştiriciler veya tuşları eşlenen değilse, hiçbir şey varsa, ancak, olursa self.emit işlevinde casusluk yapmak için.

cevap

0

Sinon ile yapabilirim. Benim durumumda

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 
}) 

Ben mesela pencere focus ve belgeyi click sınamak zorunda: İşte benim çözümdür.

Yardım edin

+0

Bu, OP'nin test etmek istediklerini test etmiyor. Bu sadece addEventListener'ın çağrıldığını test ediyor. OP, 'addEventListener' ile eklenen olay işleyicisinin davranışını test etmek ister. – Louis

+0

, bu yüzden dinleyiciye çağrılan func'im için ayrı bir test yaptım. Bunu gerçekleştirmenin daha kolay yolu buydu – lucianosousa