2016-07-10 3 views
5

Я пытаюсь выяснить, лучший способ для тестирования этого метода:Как протестировать document.addEventListener ('keydown', cb) с помощью 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); 
     } 
    } 
    }); 

я хотел бы, чтобы убедиться, что, если ключи модификаторов или если ключи не отображаются, ничего не происходит, однако, если они, чтобы шпионить за функцией 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

Смежные вопросы