鉴于此代码:
showForm = function (url) {
return $.get(url, function (html) {
$('body').append();
});
};
使用sinon.js
,jQuery.mockjax.js
和expect.js
时,我有以下通过测试:
it("showForm calls jQuery.append", function () {
$.mockjax({
url: '/fake'
});
var spy = sinon.spy($.fn, "append");
presenter.showForm('/fake');
setTimeout(function () {
expect(spy.called).to.be.equal(true);
}, 1000);
});
使用该setTimeout
函数等待来自异步的回调$.get
很糟糕,如果我做的太多,它会减慢我的测试套件的速度。
但是,我觉得意图是相当明确的,它似乎确实测试了我想要的东西。
有没有更好的方法,你能解释一下你的答案是怎么回事吗?