如何使用Mocha&Sinon测试document.addEventListener('keydown',cb)?

Det*_*ned 7 javascript mocha.js keyboard-events dom-events 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);
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

我想确保如果键是修饰符或者键没有映射,则没有任何反应,但是,如果它们是,则监视self.emit函数.

luc*_*usa 1

我可以用sinon来做。这是我的解决方案:

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
})
Run Code Online (Sandbox Code Playgroud)

例如,就我而言,我必须测试窗口focus和文档。click

希望能帮助到你