2013-12-23 61 views
-1

我正在做茉莉花单元测试Backbone应用程序。我是Jasmine以及Backbone的新手。我在应用程序中的视图是使用HTML模板中的BackboneJS创建的。在茉莉花测试中嘲弄Banckbone中的HTML元素

由于应用程序已经部署。现在我想测试一个Backboneview。为此,我需要在textbox中创建一个 模拟HTML和一些模拟数据。

我有这样的代码:我的茉莉花文件

that.uoView = new UoView(); 
that.uoView.render(); 
$('#sandbox').html(that.uoView.el); 

。这是我可以进行任何更改的唯一文件。它调用一个视图并将其保存在$('sandbox')

因为我已经有了HTML模板,所以我需要在HTML文本框中填充一些模拟数据。

回答

0

简单的jQuery工作由rednaw的建议。写此代码后:

that.uoView = new UoView(); 
that.uoView.render(); 
$('#sandbox').html(that.uoView.el); 

我加入这个代码:

$("#test").val('Test'); //#test is an element in uoView.el 

再其次是我的规格

+0

为了帮助人们回答你在未来的问题,请提供所有相关的代码。例如,我在问题中没有看到id为“officeToUnlock”的元素。 – rednaw

+0

@rednaw:'officeToUnlock'只不过内'uoView.el'元素 –

2

通常你初始化你的观点有这样一个元素:

that.uoView = new UiView({ el: $("#myelement") }); 
that.uoView.render() 

然后在渲染功能渲染应该进来el的HTML:你叫渲染每次

render: function() { 
    this.$el.html('my html'); 
} 

,视图得到再次呈现。你可以在任何html事件中调用渲染。

+0

我已经打电话给我的'render',不能进行任何更改我的渲染功能。在我的'el'中获得了值之后。现在我想对DOM元素进行一些更改。 –

+1

为什么不使用jquery? – rednaw

+0

如何使用。?我是新来的骨干... –

0

您可以在渲染后返回。

render: function() { 
    this.$el.html('my html'); 
    return this; 
} 

所以你最终获得:

that.uoView = new UoView(); 
$('#sandbox').html(that.uoView.render().el); 
+0

我已经调用了我的'render',并且不能对我的渲染函数做任何改变。在我的'el'中获得了值之后。现在我想对DOM元素进行一些更改。 –

+0

你可以在uoView中创建一个函数来描述你的DOM变化 例子:add_tooltip:function(){//在$ el上做些东西并调用this.render()} –

+0

这就是我在找的东西。但如何做到这一点。?我是Backbone的新手,我该怎么做。? –