2012-07-24 46 views
1

一個視圖控制器,我有了這樣的模板BuildingBlocks觀點:測試與emberjs

{{#each controller}} 
    {{view App.BuildingBlockView contentBinding="this"}} 
{{/each}} 

我想測試這一觀點在循環使用控制器每個崗位。
我正在使用茉莉花。

我創建了這樣的

App.buildingBlocksView = App.BuildingBlocksView.create() 
Em.run -> 
    App.buildingBlocksView.append() 

的觀點,我想填充該視圖控制器與3個BuildingBlocks這樣我就可以測試這個視圖包含三個元素。

請誰能告訴我該怎麼做?

我這樣做到目前爲止,但不起作用。

App.buildingBlocksController = App.BuildingBlocksController.create() 
App.buildingBlocksView.set("controller", App.buildingBlocksController.content) 
App.buildingBlocksView.controller.pushObject(App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord()) 
expect(App.buildingBlocksView.$('.building-block').length).toEqual(3) 

但我得到錯誤無法調用「pushObject」的未定義

請幫 裏克

回答

1

看起來你是在正確的軌道上 - 使用茉莉道具。

首先,我沒有看到你的問題,以便仔細檢查了該定義,App.BuildingBlocksController是Ember.ArrayController

的子類

假設是這樣的話,你要設置的初始內容陣列當創建實例時。然後將視圖的控制器屬性設置爲控制器實例,並像以前一樣推送對象。

App.buildingBlocksController = App.BuildingBlocksController.create({ content: [] }) 
App.buildingBlocksView.set("controller", App.buildingBlocksController)  
App.buildingBlocksView.controller.pushObject(App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord()) 

這應該可以解決您使用pushObject時遇到的問題。我懷疑你需要在Ember.run()循環中移動上面的內容,否則期望會失敗,因爲Ember不會更新DOM。

+0

非常感謝邁克爾工作 – 2012-07-25 10:03:19

+0

隨時。不要害怕接受;-) http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2012-07-25 18:59:30