Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js 如何将使用ObjectProxy的Ember单元测试转换为集成测试?_Ember.js_Ember Cli_Ember Qunit - Fatal编程技术网

Ember.js 如何将使用ObjectProxy的Ember单元测试转换为集成测试?

Ember.js 如何将使用ObjectProxy的Ember单元测试转换为集成测试?,ember.js,ember-cli,ember-qunit,Ember.js,Ember Cli,Ember Qunit,在升级到Ember CLI 1.13.1之前,所有组件都生成了一个单元测试,如果我的组件依赖于某个属性,我可能编写了如下代码: var supplier = var supplier = Ember.ObjectProxy.create({ ... }); // Creates the component instance var component = this.subject(); assert.equal(component._state, 'preRender'); comp

在升级到Ember CLI 1.13.1之前,所有组件都生成了一个单元测试,如果我的组件依赖于某个属性,我可能编写了如下代码:

var supplier = var supplier = Ember.ObjectProxy.create({
    ...
});

// Creates the component instance
var component = this.subject();
assert.equal(component._state, 'preRender');

component.set('supplier', supplier);

// Renders the component to the page
this.render();
assert.equal(component._state, 'inDOM');
这将通过/呈现所有ok

我现在正在为此编写一个集成测试,如下所示:

var self = this;
Ember.run(function() {
  self.set('supplier', supplier);
});
this.render(hbs`{{widgets/add-update-order-item}}`);

我遇到的问题是,
无法读取未定义的
的属性“forEach”的呈现错误,模板的一部分在supplier.prices上有一个
{{each}
。如果我将{{log supplier}}放在{{each}}前面的模板中,那么我会看到
未定义的
。所以我猜在渲染调用之前,该集没有发生过?我需要做什么才能让它正常工作,我不需要在单元测试表单中进行任何回调或等待,是吗?

github上的Rwjblue向我指出()不仅需要设置属性,还必须将其包含在渲染中。将我的测试更改为:

var self = this;

self.set('supplier', supplier);

this.render(hbs`{{widgets/add-update-order-item supplier=supplier}}`);
成功了