当然,您可以将您的模板文件添加到您的茉莉花测试运行器页面。
另一种解决方案是模拟你的视图DOM元素。您可以在构造函数中插入元素,如new View({el: $($('myTemplate').html())})
。有了这个解决方案可以完全模拟出在大多数情况下,HTML
beforeEach(function() {
el = {bind: function(){}};
spyOn(el, 'bind');
var OrderListView = new OrderSumView({el: el, model: model});
});
it('it should render the sum after firing the remove event', function() {
//test that bind('click', someFunction) was called to your element
expect(el.bind).toHaveBeenCalledWith('click', model.bind.argsForCall[0][1]);
// fire up the function that was bind to the click event
el.bind.argsForCall[0][1]()
})
:这样做,您可以在您的测试添加元素的模拟或间谍,而无需创建基于模板的DOM元素。它是我们测试我们的大型GWT应用程序的方式。使用GWT比使用主干更容易,因为我们处于JAVA世界,但原理是一样的。不要测试DOM,只需测试你的业务逻辑。如果这样做,我的私人骨干项目,它运作良好。
也看看这个SO:Stub out a jQuery selector call?
感谢您的回答安德烈亚斯,但我部分不同意你。由于Backbone被设计为一个前端框架,我们期望核心/业务逻辑的大部分都可以在服务器端处理,尽管API调用例如。 在这个配置中,我的观点是我们应该只写集成测试,以便检查客户端的正确数据显示。我可能误解了一些东西,但我认为你必须测试DOM元素,而不仅仅是对象的状态。 – Arnlen 2014-05-12 13:33:38