首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用茉莉花测试骨干关系

用茉莉花测试骨干关系
EN

Stack Overflow用户
提问于 2013-06-29 20:42:19
回答 1查看 505关注 0票数 0

更新:

我有一个简单的骨干关系模型:

代码语言:javascript
复制
@App.M.Product = Backbone.RelationalModel.extend
    defaults: {}
    url: App.D.dataURL
    relations: [
        {
            type: Backbone.HasMany
            key: 'templates'
            relatedModel: 'App.M.Template'
            collectionType: 'App.C.Templates'
            reverseRelation:
                key: 'product'
        }
        {
            type: Backbone.HasMany
            key: 'pages'
            relatedModel: 'App.M.Page'
            collectionType: 'App.C.Pages'
            reverseRelation:
                key: 'product'
        }
        {
            type: Backbone.HasMany
            key: 'uploaded_images'
            relatedModel: 'App.M.UploadedImage'
            collectionType: 'App.C.UploadedImages'
            reverseRelation:
                key: 'product'
        }
    ]
    initialize: ->
        if @get('minimumNumberOfPages') < 1
            @set 'minimumNumberOfPages', 1
    fixPages: ->
        col = @get 'pages'
        col.each (page) ->
            page.collection = col

还有一个更简单的测试套件:

代码语言:javascript
复制
"use strict"

describe 'Product', ->
    pr = null
    beforeEach ->
        pr = new App.M.Product
    it 'should be defined', ->
        expect(pr).toBeDefined()

但是,该模型未能初始化(取自testem的终端输出):

代码语言:javascript
复制
TypeError: Cannot read property 'prototype' of undefined
    at Backbone.HasMany.Backbone.Relation.extend.initialize (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:835:78)
    at Backbone.Relation (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:537:9)
    at new child (http://localhost:7357/app/bower_components/backbone/backbone-min.js:1:25220)
    at _.extend.initializeRelation (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:137:5)
    at null.<anonymous> (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:1176:31)
    at Array.forEach (native)
    at Function.w.each.w.forEach (http://localhost:7357/app/bower_components/underscore/underscore-min.js:1:599)
    at Backbone.RelationalModel.Backbone.Model.extend.initializeRelations (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:1175:6)
    at Backbone.RelationalModel.Backbone.Model.extend.set (http://localhost:7357/app/bower_components/backbone-relational/backbone-relational.js:1373:11)
    at Backbone.Model (http://localhost:7357/app/bower_components/backbone/backbone-min.js:1:3929)

为什么会这样呢?该应用程序唤醒正确,测试不正确。

EN

回答 1

Stack Overflow用户

发布于 2013-07-01 08:48:34

所以错误是ReferenceError: product is not defined。这是因为您在测试中的before函数中定义了它,因此两者是不相同的,而在测试中则是未定义的。您必须在描述块中定义它:

“严格使用”

描述“产品”,->积= null

代码语言:javascript
复制
beforeEach ->
    product = new App.M.Product

it 'should be defined', ->
    expect(product).toBeDefined()

对于另一个错误TypeError: Cannot read property 'prototype' of undefined,您似乎错过了添加collectionType中提到的集合。因此,插件在全局命名空间中寻找App.C.Pages,并尝试获取对象的原型。但是正如错误说的,它没有被定义

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17384483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档