1

我有一个 BuildingBlocks 视图,其中包含这样的模板:

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

我正在尝试使用控制器测试此视图是否在每个帖子上循环。
我正在使用茉莉花。

我已经创建了这样的视图

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

我想用 3 个 BuildingBlocks 填充这个视图的控制器,这样我就可以测试这个视图是否包含 3 个元素。

请问谁能告诉我该怎么做?

到目前为止,我正在这样做,但不起作用。

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'

请帮助瑞克

4

1 回答 1

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。

于 2012-07-25T03:27:08.223 回答