【问题标题】:Jasmine fixtures for a Backbone.js view with attributes that are jQuery objects带有 jQ​​uery 对象属性的 Backbone.js 视图的 Jasmine 固定装置
【发布时间】: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


【解决方案1】:

由于 cmets 中提到的 mu 太短,这不是正确的方法。将 jQuery 对象赋值移动到初始化、渲染或其他方法中更容易测试。

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多