测试新手,我该如何用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()
是否被调用?
这个方法不返回任何东西。我是否修改我的代码以使其更易于测试?
有几种方法可以做到这一点。
- 您可以创建对象,然后监视
modifyRowIndexBy
以检查当handleKeyDown
被给定参数调用时它是否被调用。 - 你可以把你的键处理从你的"索引修改"中分离出来,这样他们就可以独立测试(监视你正在测试的同一个对象是不好的做法)
-
modifyIndexBy
实际上做什么?您可以测试结果是否相同(因此它实际上并没有测试modifyIndexBy
是否被调用,而是测试modifyIndexBy
应该做的事情是否已经完成)。这是一个更BDD的方法。
相关文章:
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何在测试异步运行时使用 Sinon 沙箱
- Sinon-带有回调的存根函数-导致测试方法超时
- beforeEach 不会在模块化 QUnit/Sinon 测试中使用 CoffeeScript 中的 Require.
- 在 Sinon 中存根整个班级进行测试
- 如何模拟快乐.js回复 Sinon 进行单元测试
- 测试Express.js res.render在承诺与Mocha&Sinon spy
- 如何使用 sinon.stub 编写单元测试以“请求”节点模块
- 助焊剂 + Sinon + 承诺测试总是通过或超时
- 使用 Sinon.js 测试 navigator.browserLanguage 或 navigator.languag
- 使用sinon mocks设置摩卡测试,并带有mysql和bluebird承诺
- 使用 Sinon.js 测试一个函数是否调用 ES6 模块中的另一个函数
- 如何在Jasmine中每次测试后自动恢复所有sinon.js间谍
- 测试Backbone.js模型保存使用Sinon不调用成功回调
- 如何使用Sinon创建阻止实际函数执行的测试替身
- 什么'这个异步JavaScript函数的单元测试是错误的(通过Mocha/Sinon)
- 在模块上使用sinon测试方法调用.出口的方法
- 模拟和测试一个按键事件与摩卡,Chai, Sinon
- 为什么我做这个测试的时候没有叫这个sinon间谍
- 我如何测试Sinon.js函数调用的顺序