使用emberjs测试视图控制器

testing a views controller with emberjs

本文关键字:控制器 视图 测试 emberjs 使用      更新时间:2024-01-27

我有一个BuildingBlocks视图,它有一个这样的模板:

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

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

我已经创建了这样的视图

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

我想用3个构建块来填充这个视图的控制器,这样我就可以测试这个视图是否包含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"

请帮忙Rick

看起来你走在了正确的轨道上——使用jasmine的道具。

首先,我看不出你问题中的定义,所以请仔细检查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。