Sinon js调用PUT或POST方法

时间:2015-03-30 06:10:17

标签: javascript unit-testing backbone.js mocking sinon

我在我的项目中使用sinon js进行虚假服务器调用。它适用于GET调用,但我有一个场景,我想用PUT或POST调用来模拟服务器。 我是这样做的:

server = sinon.fakeServer.create(); 
server.respondWith('PUT', /\/administration\/email/,
[204, { "Content-Type": "application/json" }, JSON.stringify(EmailModelFixture)]);

emailView.save("abc@gmail.com");
server.respond();// Responding that save call.

但这不起作用。任何人都知道如何解决它?

1 个答案:

答案 0 :(得分:3)

我已经检查了这个场景,它对我来说没问题,所以效果很好。

以下是Backbone

的示例
test("should submit PUT request", function() {
    var server = sinon.fakeServer.create(); 

    server.respondWith('PUT', /\/administration\/email/,
        [204, { "Content-Type": "application/json" }, JSON.stringify({a:"1"})]);

    var spy_done = sinon.spy();
    var spy_fail = sinon.spy();

    var model = new (Backbone.Model.extend({
        url: "/administration/email/"
    }));

    // Save new model to generate PUT request
    model.save({ id: "test" }, {
        success: spy_done,
        error: spy_fail
    });

    server.respond();

    expect(spy_done.called).to.be.true;
    expect(spy_fail.called).to.be.false;
});

我建议你通过转储server.requests调试你的ajax请求,并检查那里的url和方法,以了解错误。