Ember.js 如何在QUnit中设置余烬数据多态模型? 出身背景
我在我的项目中使用了Ember数据,并定义了如下几个模型: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(
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'
)