使用Jasmine使用模板测试骨干视图的最佳方法

时间:2012-01-30 20:43:35

标签: backbone.js jasmine

我正在学习骨干,所以我正在构建一个简单的Backbone应用程序。我正在使用jasmine框架来测试我的骨干应用程序。

幸运的是,我的第一次茉莉花测试是针对Backbone View的。这是一个使用haml-js模板的非常简单的视图。应用程序用户使用rails 3.1,所以整个东西都是通过sprockets在haml-sprockets gem的帮助下打包的,并且它可以工作。

然而,当我用茉莉花测试时,我收到错误

  

TypeError:无法调用未定义的方法'backbone / templates / admin_personal_attribute_template'

我理解这是因为haml-js模板不存在。

通常,此模板的访问方式如下:

$(this.el).html(window.JST["backbone/templates/admin_personal_attribute_template"]({pars:this.model.attributes}));

(即haml-sprockets gem compiles正在使用haml-js并附加到window.JST)。

我正在寻找在茉莉花中测试我的观点+模板的'最佳',即最不具破坏性且希望最简单的方法。

我找到了很多方法,但不确定“最佳”是什么:

  1. 使用jasmine-headless-webkit。这将使扩展链轮,但松散的访问jasmine服务器的能力,如此简单,但一些灵活性的损失
  2. 使用japhr所描述的phantom.js(抱歉stackoverflow阻止我发布更多链接)将解决服务器端限制,但这似乎是一个非常新的未经测试的方法,如此灵活但不简单
  3. 按照所述here预生成模板。这在概念上很简单,但需要一些维护 - 所以一些编码工作
  4. 假设我有一个包含约20个模型和~40个视图和模板的项目,那么最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

查看此文章:Unit Testing Backbone Applications With Jasmine

它有一些例子如何为Backbone JS视图实现单元测试

还有一本O'Reilly书籍"Developing Backbone.js Applications",其中有一章用Jasmine和qUnit测试视图

答案 1 :(得分:0)

我写了一篇关于使Backbone.js,CoffeeScript和Jasmine很好地融合在一起的博客文章。希望对于遇到这个问题的任何人都有用:http://ihid.co.uk/blog/backbone-js-coffeescript-jasmine-haml-and-rails-working-together