Ember.js 如何在QUnit中设置余烬数据多态模型? 出身背景

Ember.js 如何在QUnit中设置余烬数据多态模型? 出身背景,ember.js,coffeescript,ember-data,polymorphic-associations,Ember.js,Coffeescript,Ember Data,Polymorphic Associations,我在我的项目中使用了Ember数据,并定义了如下几个模型: App.GiftCard = DS.Model.extend( destination: DS.belongsTo('destination', polymorphic: true) isCampaign: (-> @get('destination.constructor') == App.Campaign ).property() ) App.Destination = DS.Model.extend(

我在我的项目中使用了Ember数据,并定义了如下几个模型:

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()
我的礼品卡模型以多态关系作为目的地,其中一种类型是活动

这一切都在应用程序中按预期工作,但现在我正试图使用QUnit为isCampaign行为编写一个单元测试。我不明白的是,我如何创建一个GiftCard记录并将一个活动分配为多态目的地

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

第一次尝试 但这就产生了错误:

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

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

第二次尝试 但在这种情况下,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"
  }
}

通过将createRecord更改为push,并将destination指定为ID,destinationType指定为模型,我可以实现这一点:

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

@gift_card = @store.push('gift_card',
  id: 1,
  amount: 100.00,
  destination: 1,
  destinationType: 'campaign'
)
{
  "gift_card":{
    "id":1,
    "amount":100.0,
    "destination":{
      "type":"campaign",
      "id":5
    },
    "created_at":"2013-12-10T01:17:30.373Z"
  }
}
@store.createRecord('campaign', id: 1)

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