Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试余烬计算属性时创建相关对象的更好方法?_Javascript_Ember.js - Fatal编程技术网

Javascript 测试余烬计算属性时创建相关对象的更好方法?

Javascript 测试余烬计算属性时创建相关对象的更好方法?,javascript,ember.js,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,因为关联可以出现/消失

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

这个模型有一个计算属性,它依赖于父对象的存在,比如

// 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
进行设置似乎非常困难,我想知道是否有更好、更标准的方法将模型分配给另一个模型。余烬文件是。。。稀疏。

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

如果你使用的是moduleForModel,你有。你的ember数据版本是什么?请参阅此处的测试,它只与
parent
而不是
parent.content
@steveax啊,文档中遗漏了这一点。。我还没有意识到模特们可以这样进入商店,谢谢-如果你想发布一个答案,我会接受的,因为这看起来是官方的方式it@alptugd哦,很酷,很高兴看到它在那里工作。。我们在Ember 2.10上,我试过设置为
parent
并且它不高兴。