2012-07-24 92 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