测试新手,我将如何使用 Mocha、Chai、Enzyme 和 Sinon 测试此方法?

New to testing, how would I test this method with Mocha, Chai, Enzyme, and Sinon?

这是我的方法

  handleKeyEvent(event) {
    const code = event.keyCode;

    if (UsedKeys.includes(code)) {
      event.preventDefault();

      if (code === KeyCodes.DOWN) {
        this.modifyIndexBy(1);
      } else if (code === KeyCodes.UP) {
        this.modifyIndexBy(-1);
      }
    }
  }

我对测试还是很陌生,我不知道如何测试这篇文章。 方法接受一个事件,那我是不是要合成一个事件对象传进去?

在那之后,我是否只是以某种方式测试 this.modifyIndexBy() 被调用?

此方法 return 没有任何作用。我是否修改我的代码以使其更易于测试?

有几种方法可以做到这一点。

  • 您可以创建对象,然后监视 modifyRowIndexBy 以检查在使用给定参数调用 handleKeyDown 时是否调用了它。
  • 您可以将密钥处理与 "index modifying" 分开,以便可以独立测试它们(监视您正在测试的同一对象是不好的做法)
  • modifyIndexBy实际上做了什么?您可以测试 outcome 是否相同(因此它实际上并没有测试调用了 modifyIndexBy,而是测试了 modifyIndexBy 应该做的事情)。这是一种更 BDD 的方法。