2016-07-10 16 views
5

Tôi đang cố gắng để tìm ra cách tốt nhất để thử nghiệm phương pháp này:Làm thế nào để kiểm tra document.addEventListener ('keydown', cb) với Mocha & Sinon?

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

tôi muốn đảm bảo rằng nếu các phím được bổ hoặc nếu các phím không được ánh xạ, không có gì xảy ra, tuy nhiên, nếu họ đang theo dõi chức năng self.emit.

Trả lời

0

Tôi có thể làm điều đó bằng sinon. Đây là giải pháp của tôi:

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

Trong trường hợp của tôi, tôi đã phải kiểm tra cửa sổ focus và tài liệu click ví dụ.

Hy vọng điều này sẽ giúp

+0

Điều này không kiểm tra những gì OP muốn thử nghiệm. Đây chỉ là kiểm tra xem 'addEventListener' đã được gọi hay chưa. OP muốn kiểm tra hành vi của trình xử lý sự kiện được thêm vào với 'addEventListener'. – Louis

+0

vì vậy, tôi đã làm một bài kiểm tra tách biệt cho func của tôi đã được gọi trên người nghe. đó là cách dễ dàng hơn để làm cho nó xảy ra – lucianosousa

Các vấn đề liên quan