2015-07-13 34 views
0

之前升級到灰燼CLI 1.13.1所有組件生成一個單元測試,如果我的組件依賴於我可能已經寫過類似的屬性:如何使用ObjectProxy將Ember單元測試轉換爲集成測試?

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}}`); 

我的問題是Cannot read property 'forEach' of undefined渲染錯誤,模板的一部分具有{{each}}超過supplier.prices。如果我在{{each}}之前的模板中放置{{log supplier}},那麼我會看到undefined。所以我的猜測是這個集合在渲染調用之前沒有發生過?我需要做些什麼才能使這個工作,我不需要任何回調或在單元測試表單中等待,現在呢?

回答

0

github上的Rwjblue向我指出(https://github.com/ember-cli/ember-cli/issues/4532)不僅需要設置屬性,還必須將其包含在渲染中。將我的測試更改爲:

var self = this; 

self.set('supplier', supplier); 

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

工作。

相關問題