测试新手,我将如何使用 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 的方法。
这是我的方法
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 的方法。