Jasmine fixtures用于具有jQuery对象属性的Backbone.js视图
我正在尝试测试一个主干视图,该视图的属性设置为jQuery对象。我可以测试视图中的所有属性,除了设置为jQuery对象的属性 我尝试在实例化视图之前加载一个fixture,但是没有找到任何dom元素。我还能够成功地使用fixture,后面是直接使用jQuery的断言。我只是无法准备视图所需的dom 在下面的示例中,规范失败,这些是我通过控制台检查时得到的值:Jasmine fixtures用于具有jQuery对象属性的Backbone.js视图,jquery,backbone.js,jasmine,fixtures,jasmine-jquery,Jquery,Backbone.js,Jasmine,Fixtures,Jasmine Jquery,我正在尝试测试一个主干视图,该视图的属性设置为jQuery对象。我可以测试视图中的所有属性,除了设置为jQuery对象的属性 我尝试在实例化视图之前加载一个fixture,但是没有找到任何dom元素。我还能够成功地使用fixture,后面是直接使用jQuery的断言。我只是无法准备视图所需的dom 在下面的示例中,规范失败,这些是我通过控制台检查时得到的值: profileView.name # => [] profileView.money # => [] 为这些类型的测试设置
profileView.name # => []
profileView.money # => []
为这些类型的测试设置dom的正确方法是什么?这是完全错误的方法吗?这不是实际的代码,而是一个非常接近的示例
主干视图
型材夹具
茉莉花
由于评论中提到的mu太短,这不是正确的方法。将jQuery对象分配移动到initialize、render或其他方法中更容易测试。在initialize中说@name=$'name'或在render中说@name=@$'name'不是更好吗?当然,假设你的观点没有因为弄乱了@el之外的东西而行为不端。是的,这种方法更容易测试。我正转向那种方法。谢谢,@muistoshort。
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)
...