2

我正在尝试使用sinon.fakeServerorsinon.useFakeXMLHttpRequest和 require.js 模拟 Backbone.Model.fetch 请求。

这是我无法正常工作的代码 (1)

我的问题是:
如何使用 sinon.fakeServer 获取夹具数据?
请在这段代码末尾的两条评论。

PS:
如果我在获取有关 sinon.fakeServer 的代码的注释时发出请求,它会向服务器发出 get 请求。
如果我使用 sinon.fakeServer 发出获取请求,它不会获取任何东西(服务器和夹具)


(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

             });

});

在此处输入图像描述

4

1 回答 1

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

 });
于 2012-05-31T13:40:56.893 回答