我在我的项目中使用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.
但这不起作用。任何人都知道如何解决它?
答案 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和方法,以了解错误。