有数百万个示例和博客如何创建一个sinon fakeServer响应200 OK ajax请求,但我找不到任何正确测试服务器错误的示例。
我有一个带有“检查”功能的Backbone模型,如下所示:
check: function(callback){
this.fetch({
success: function(model, response){
if(response.authenticated){
if('success' in callback) callback.success(model, response);
} else {
if('error' in callback) callback.error(model, response);
}
},
error: function(model, response){
if('error' in callback) callback.error(model, response.responseJSON[0]);
}
});
}
我正在用Sinon测试这个功能 - 在这里:
it("should call callback error on server error", function(done){
var clock = sinon.useFakeTimers();
this.callback = {
success: sinon.spy(),
error: sinon.spy()
};
this.server.respondWith("GET", "/api/session", [
404,
{ "Content-Type": "application/json" },
'[{"test":"error"}]'
]);
this.model.once('error', function(){
expect(this.callback.error.callCount).to.equal(1);
expect(this.callback.error.called).to.be.ok;
done();
}, this);
this.model.check(this.callback);
//why clock has to be set here at min 10ms?
clock.tick(10);
});
在添加至少10ms值的clock.tick之前,测试行为不正常。 即使没有clock.tick,callback.error也能正确处理,但测试不起作用。
有人可以向我解释一下这里发生了什么吗?我在混合一些概念吗?
由于