1
和其他数百万其他应用程序一样,我们有一个可选属于另一个的模型。测试Ember计算属性时创建相关对象的更好方法?
这种模式有一个依赖于父母,就像存在一个计算的属性...
// 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
设置似乎真的哈克,我想知道是否有分配模式,另一种更好,更标准的方式。 Ember文档是...稀疏。
如果您使用的是moduleForModel,您[有权访问商店](https://github.com/emberjs/ember-qunit#ember-data-tests)。 – steveax
什么是你的余烬数据版本?在此[twiddle](https://ember-twiddle.com/d12acfc747bae9fd5b926b2abbe32cf8?openFiles=tests.unit.models.some-model-test.js%2C)查看测试正在使用'parent'而不是'parent'。 content'。 – alptugd
@steveax啊,在文档中错过了......我没有真正意识到模型可以访问这样的商店,谢谢 - 如果你想发布一个答案,我会接受它,因为它看起来像官方的方式做它 – kevlarr