使用emberjs测试视图控制器
testing a views controller with emberjs
我有一个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。
相关文章:
- 如何在Jquery中发布后将值从视图返回到控制器
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 重定向(URl)提供控制器视图 URI模式
- AngularJS - 在服务内部对数组进行排序,在控制器/视图中保留绑定
- 控制器视图上下文中的 dom 元素
- 创建新模型的正确控制器/视图模式是什么
- 强制路由实例化新的控制器/视图对,而不是更改模型
- AngularJS,通过引用更新子控制器视图中的ng repeat
- 如何在控制器视图中将ViewBag值包含到javascript中
- 如何使控制器/视图特定的Javascript在Rails3.1生产环境中工作
- AngularJS方式:通过通知功能扩展控制器/视图
- Angular Js中的newbie - link会在控制器视图中触发另一个控制器动作
- 如何将用户选择从一个控制器视图发送到另一个
- ASP.. NET MVC控制器/视图显示本地时间
- 将数据从javaScript传递到MVC控制器视图ajax
- 从ng-click angular的控制器视图中使用数据
- 烬.js页头作为控制器/视图
- 重构Rails控制器/视图以调用Javascript/jQuery
- 在EmberJS中向嵌套的控制器/视图发送数据
- Emberjs:正确绑定模型/控制器/视图与夹具数据