我有一个BuildingBlocks视图,其中包含如下模板:
{{#each controller}}
{{view App.BuildingBlockView contentBinding="this"}}
{{/each}}
我正在尝试使用控制器测试此视图在每个帖子上循环 我正在使用Jasmine。
我已经创建了这样的视图
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'
请帮忙 瑞克
答案 0 :(得分:1)
看起来你走在正确的轨道上 - 使用茉莉花的道具。
首先,我没有在你的问题中看到定义,所以请仔细检查App.BuildingBlocksController是否是Ember.ArrayController的子类
假设情况如此,您将在创建实例时设置初始内容数组。然后将视图的controller属性设置为控制器实例,并像以前一样推送对象。
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。