2

sinon.fakeServerまたはとrequire.jsを使用してBackbone.Model.fetchリクエストをシミュレートしようとしてsinon.useFakeXMLHttpRequestいます。

これが正しく機能していない私のコードのピアスです(1)

私の質問は
、sinon.fakeServerを使用してフィクスチャデータを取得するにはどうすればよいですか?
このコードの最後にある2つのコメントをお願いします。

PS:
sinon.fakeServerに関するコードをコメント化してフェッチ要求を行うと、サーバーに対してget要求が行われます。
sinon.fakeServerを使用してgetリクエストを行うと、何もフェッチされません(サーバーとフィクスチャの両方)


(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 に答える