javascript - 使用 jasmine 测试 Backbone 关系模型

标签 javascript backbone.js jasmine backbone-relational

假设我有两个简单的固定文件,一个用于用户 (1),一个用于消息 (2)。

消息的 Backbone 模型如下 (3)。

如果我加载“Message Fixture”,我还想获得有关消息模型中指定的用户的相关信息。
使用 jasmine 测试套件在规范 View (4) 中激活此目标的正确方法是什么?
详情请见(4)中的评论。


(1)

// User Fixture
beforeEach(function () {
    this.fixtures = _.extend(this.fixtures || {}, {
        Users: {
            valid: {
                status: 'OK',
                version: '1.0',
                response: {
                    users: [
                        {
                            id: 1,
                            name: 'olivier'
                        },
                        {
                            id: 2,
                            name: 'pierre',
                        },
                        {
                            id: 3,
                            name: 'george'
                        }
                    ]
                }
            }
        }
    });
});

(2)

// Message Fixture
beforeEach(function () {
    this.fixtures = _.extend(this.fixtures || {}, {
        Messages: {
            valid: {
                status: 'OK',
                version: '1.0',
                response: {
                    messages: [
                        {
                            sender_id: 1,
                            recipient_id: 2,
                            id: 1,
                            message: "Est inventore aliquam ipsa"
                        },
                        {
                            sender_id: 3,
                            recipient_id: 2,
                            id: 2,
                            message: "Et omnis quo perspiciatis qui"
                        }
                    ]
                }
            }
        }
    });
});

(3)

// Message model

MessageModel = Backbone.RelationalModel.extend({
    relations: [
        {
            type: Backbone.HasOne,
            key: 'recipient_user',
            keySource: 'recipient_id',
            keyDestination: 'recipient_user',
            relatedModel: UserModel
        },
        {
            type: Backbone.HasOne,
            key: 'sender_user',
            keySource: 'sender_id',
            keyDestination: 'sender_user',
            relatedModel: UserModel
        }
    ]
});

(4)

// Spec View

describe('MyView Spec', function () {
        describe('when fetching model from server', function () {
            beforeEach(function () {
                this.fixture = this.fixtures.Messages.valid;
                this.fixtureResponse = this.fixture.response.messages[0];
                this.server = sinon.fakeServer.create();
                this.server.respondWith(
                    'GET',
                    // some url
                    JSON.stringify(this.fixtureResponse)
                );
            });
            it('should the recipient_user be defined', function () {
                this.model.fetch();
                this.server.respond();
                // this.fixtureResponse.recipient_user is not defined 
                // as expected by the relation defined in (3)
                expect(this.fixtureResponse.recipient_user).toBeDefined();
            });
        });
    });
});

最佳答案

看看这个系列教程http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html

这是关于Model testing的具体部分.

不知道是否能解决您的问题,但可能包含宝贵的信息。

关于javascript - 使用 jasmine 测试 Backbone 关系模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954425/

相关文章:

javascript - 如何让 Angular 2 CLI ng 通过子目录提供服务

javascript - 如何仅使用 jasmine 调试我的函数?

javascript - 如何在 JavaScript 的一行中调用一个可能不存在的方法而不出错?

javascript - meteor JS : Routing with Backbone. js

backbone.js - 加载多个 requireJS 和 Backbone 实例

javascript - 我该如何重写这段代码

javascript - 如何在用 TypeScript 编写的 Angular Controller 上访问范围值(在测试中)?

Angular 2测试: calling function directly cannot change the component object itself

javascript - 是否可以修改 Google Charts 折线图,以便无论光标位于图表上的哪个位置都显示点?

javascript - 禁用其他 Bootstrap-datepicker View 模式?