Javascript Sinon js对PUT或POST方法的调用

Javascript Sinon js对PUT或POST方法的调用,javascript,unit-testing,backbone.js,mocking,sinon,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)]

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

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


但这是行不通的。有人知道如何修复它吗?

我已经检查了这个场景,我觉得还可以,所以它工作得很好

下面是主干网的一个示例

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和方法,以了解问题所在。

我也遇到了同样的问题运气不好,试试这个,我必须注册获取响应,并将响应如下:
server.respondWith('GET',/\/administration\/email/,[200,{“内容类型”:“application/json”},json.stringify({a:“1”})];
server.respondbwith('PUT',/\/administration\/email/,[204,{“内容类型”:“application/json”},json.stringify({a:“1”})])
如果我注释掉GET注册,那么它可以正常工作。那么我们如何注册两个方法调用呢?我已经一次检查了这两个方法调用,并且仍然可以工作,即使我添加了新模型,该模型生成GET请求和服务器响应两次。请更新您的问题以包括您的测试?
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;
});