【发布时间】:2013-12-06 06:01:50
【问题描述】:
我在这里不知所措。
我希望开始使用 jasmine 为我正在开发的网站添加测试。不过,我无法测试我的任何视图,因为在我的视图的初始化函数中定义的模板是保存在对象中的预编译车把模板。
我的设置是这样的:
index.jade 在我的节点服务器上预编译。这个玉文件有一堆
<script id="[name]" type="text/x-handlebars-template">
在其中,每个视图都有 sn-ps。索引页的底部是一个 jQuery $.each 调用:
var templates = {};
$("[type='text/x-handlebars-template']").each(function(index, div){
templates[div.id] = Handlebars.compile(div.innerHTML);
});
循环遍历所有这些脚本标签,编译它们,并将它们加载到模板对象中。然后我将此对象保存为我的主应用模型的属性,以便根据需要传递给视图。
这对网站本身很有效,但已被证明是一个测试障碍。当我尝试加载我的视图时,它们不会初始化,因为这样做需要主模型上的“模板”对象,并从索引中提取的脚本标签填充。但是我的 specRunner 中不存在 index.html,因为每次我进行更改时,我都将所有脚本标签复制/粘贴到 spec runner 中。
我不知道这里的解决方法是什么。我确定这很简单,而且我太密集了,看不到它,但我一直在尝试并在五个小时的大部分时间里寻找解决方案,但没有任何东西可以展示。
我知道我可以使用 grunt 将 .jade 文件编译为 .html,但过去我不确定如何将 html 文件中的信息获取到我的 SpecRunner。
【问题讨论】:
-
看起来
this.model未定义。您可以检查为什么它没有正确设置。
标签: backbone.js handlebars.js jasmine