【发布时间】:2013-10-31 23:58:29
【问题描述】:
我正在尝试测试将属性设置为 jQuery 对象的 Backbone 视图。除了设置为 jQuery 对象的属性之外,我可以测试视图中的所有属性。
我尝试在实例化视图之前加载一个固定装置,但没有找到任何 dom 元素。当直接使用 jQuery 进行断言时,我也能够成功使用固定装置。我只是无法准备视图锁定所需的 dom。
在下面的示例中,规范失败,这些是我通过控制台检查时最终得到的值:
profileView.name # => []
profileView.money # => []
为此类测试设置 dom 的正确方法是什么?这是完全错误的方法吗?这不是实际的代码,而是一个相当接近的示例。
主干视图
App.Views.ProfileView = Backbone.View.extend
name: $('#name')
money: $('#money')
...
轮廓夹具
#name name
#money money
茉莉花规格
...
describe "ProfileView", ->
it "money is present", ->
loadFixtures("profile")
profileView = new App.Views.ProfileView
expect(profileView.money.length).toEqual(1)
...
【问题讨论】:
-
在
initialize中写@name = $('#name')或者在render中写@name = @$('#name')不是更好吗?当然,假设您的观点并没有因为与他们自己以外的东西混淆而行为不端@el当然。 -
是的,这种方法更容易测试。我正在转向这种方法。谢谢,@muistooshort。
标签: jquery backbone.js jasmine fixtures jasmine-jquery