【问题标题】:How do I set an Ember Data polymorphic model in QUnit?如何在 QUnit 中设置 Ember Data 多态模型?
【发布时间】:2014-04-28 03:51:26
【问题描述】:

背景

我在我的项目中使用 Ember Data 的 ActiveModelAdapter 并定义了一些模型,如下所示:

App.GiftCard = DS.Model.extend(
  destination: DS.belongsTo('destination', polymorphic: true)

  isCampaign: (->
    @get('destination.constructor') == App.Campaign
  ).property()
)

App.Destination = DS.Model.extend()

App.Campaign = DS.Model.extend()

我的礼品卡模型具有作为目的地的多态关系,其中一种类型是 Campaign。

这一切都在应用程序中按预期工作,但现在我正在尝试使用 QUnit 为 isCampaign 行为编写单元测试。我不知道的部分是如何创建礼品卡记录并将活动分配为多态目的地?

我尝试了几种不同的方法。第一个是创建活动记录并将其分配给目标属性:

第一次尝试

campaign = @store.createRecord('campaign', id: 1)
@gift_card = @store.createRecord('gift_card',
  id: 1
  amount: 100.00
  destination: campaign
)

但这给出了错误:

断言失败:您只能向此关系添加“目标”记录

我尝试的另一件事是创建一个目标记录并指定类型:

第二次尝试

campaign = @store.createRecord('destination', id: 1, type: 'campaign')

@gift_card = @store.createRecord('gift_card',
  id: 1
  amount: 100.00
  destination: campaign
)

但在那种情况下,destination.constructor 是App.Destination,这不是我想要的。

其他信息

不管怎样,我的 API 中用于建立关系的 JSON 如下所示:

{
  "gift_card":{
    "id":1,
    "amount":100.0,
    "destination":{
      "type":"campaign",
      "id":5
    },
    "created_at":"2013-12-10T01:17:30.373Z"
  }
}

【问题讨论】:

    标签: ember.js coffeescript ember-data polymorphic-associations


    【解决方案1】:

    我可以通过将 createRecord 更改为 push 并将目标指定为 ID 并将目标类型指定为模型来实现此功能:

    @store.createRecord('campaign', id: 1)
    
    @gift_card = @store.push('gift_card',
      id: 1,
      amount: 100.00,
      destination: 1,
      destinationType: 'campaign'
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2012-12-18
      • 2012-08-23
      • 1970-01-01
      相关资源
      最近更新 更多