我正在尝试使用sinon.fakeServer
或sinon.useFakeXMLHttpRequest
和require.js来模拟Backbone.Model.fetch请求。
这是我的代码无法正常工作(1)
我的问题是:
如何使用sinon.fakeServer获取夹具数据?
请在这段代码的最后两条评论。
P.S .:
如果我将获取请求注释到关于sinon.fakeServer的代码,它会向服务器发出get请求
如果我使用sinon.fakeServer发出get请求,它不会获取任何内容(服务器和fixture)
(1)
define([
'js/models/myModel',
'js/spec/fixtures/myModel.fixture'
], function (MyModel) {
beforeEach(function () {
this.myModel = new MyModel();
console.log("fixtures", this.fixtures.Task, this);
this.fixture = this.fixtures.Task.valid;
this.fixtureTask = this.fixture.response;
this.server = sinon.fakeServer.create();
this.server.respondWith(
"GET",
Routing.generate("api_get_tasks"),
JSON.stringify(this.fixture)
);
});
afterEach(function () {
this.server.restore();
});
it("should make the correct request", function() {
this.server.respond();
this.feeds.fetch();
console.log(this.fixture); // this response is OK
console.log(this.myModel.attributes); // it does not take the value from this.fixture
console.log("fixtures", this.fixtures.Task, this); // see the picture below
});
});
答案 0 :(得分:1)
您不要在模型上调用fetch
方法。
试试这个:
it("should make the correct request", function() {
this.myModel.fetch();
this.server.respond();
console.log(this.fixture); // this response is OK
console.log(this.myModel.attributes); // it does not take the value from this.fixture
console.log("fixtures", this.fixtures.Task, this); // fixtures Object jasmine.Spec
});