在测试Ember计算属性时创建相关对象的更好方法是什么?

时间:2017-04-06 18:52:40

标签: javascript ember.js

与数百万其他应用程序一样,我们有一个可选择属于另一个的模型。

此模型的计算属性取决于父级的存在,如...

// some-model

parent: belongsTo('some-model'),

hasParent: Ember.computed('parent.id', function() {
  return Ember.isPresent(this.get('parent.id');
}),

(我们使用的是CP代替computed.alias,因为关联可以显示/消失,alias不会观察到更改)

一切都很好,它对我们有用。我去添加单元测试...

test('hasParent', function(assert) {
  const someModel = this.subject({ id: 1, name: 'Mr. Model, Sr' });

  assert.equal(someModel.get('hasParent'), false,
    'returns false when no parent ID');

  const childModel = this.subject({ name: 'Little Model, Jr.' });

  childModel.set('parent.content', someModel);

  assert.equal(childModel.get('hasParent'), true,
  'returns true when has parent with ID');

  childModel.set('parent.content', null);

  assert.equal(childModel.get('hasParent'), false,
    'returns false when no parent ID');
});

使用parent.content进行设置似乎非常简单,我想知道是否有更好,更标准的方法将模型分配给另一个模型。恩伯文档很稀疏。

1 个答案:

答案 0 :(得分:2)

关于针对该问题发布的评论,最好在测试模型时使用store。因此,以下twiddle可能是实现给定测试场景的更好方法。如果将来其他任何人都需要,我会把它作为答案。

相关问题