Backbone Sinon假服务器 - 测试服务器404(500)错误响应

时间:2015-07-02 18:16:08

标签: javascript server http-status-code-404 sinon

有数百万个示例和博客如何创建一个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也能正确处理,但测试不起作用。

有人可以向我解释一下这里发生了什么吗?我在混合一些概念吗?

由于

0 个答案:

没有答案