用Mocha,Chai,Sinon模拟和测试按键事件?
问题描述:
我有一个Backbone视图,它具有keyup
和事件的自定义事件。用Mocha,Chai,Sinon模拟和测试按键事件?
events: {
"keyup .search-box": "changeTextTimer",
"keydown .search-box": "cancelTextTimer"
},
我正在写单元测试来检查这些回调是否在keyup或keydown之后被调用。我使用jQuery来触发关键事件。
it("should call cancelTextTimer", function() {
var searchBox = new SearchBoxView({el: $(HTML),}).render();
var e = $.Event("keydown");
e.which = 65;
searchBox.$(".search-box").trigger(e);
var changeTextTimer = sinon.spy(searchBox, "cancelTextTimer");
_.defer(changeTextTimer.restore);
changeTextTimer.should.have.been.calledOnce;
});
不过,我收到
AssertionError: expected cancelTextTimer to have been called exactly once, but
it was called 0 times: Got value cancelTextTimer but expected a value undefined undefined
答
试试这个
it("should call cancelTextTimer", function(done) {
var searchBox = new SearchBoxView({el: $(HTML),}).render();
var changeTextTimer = sinon.spy(searchBox, "cancelTextTimer");
_.defer(changeTextTimer.restore);
var e = $.Event("keydown");
e.which = 65;
searchBox.$(".search-box").trigger(e);
setTimeout(() => {
changeTextTimer.should.have.been.calledOnce;
done();
}, 0);
});
你设置你的间谍你触发点击后,当你将它移动到会发生什么第二行在你的测试功能? –
@HenrikAndersson这是答案材料。 –
@HenrikAnderson嗯它仍然给我同样的错误 – ElGatoGabe