我正在尝试在spec / category_keyword / categories.html中加载我的灯具。夹具的内容是
我的测试
$(function() {
beforeEach(function(){
keywordsListView = new KeywordsListView({
el: $("#keywords_list")
})
})
it("should ...", function() {
expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
})
})
然而,keywordsListView.el是未定义的,这向我建议夹具以某种方式不加载。我在萤火虫中看到了茉莉花套件,并没有看到任何与夹具有关的东西。我正在使用茉莉花宝石。我必须启用某些功能吗?
答案 0 :(得分:0)
看看这个,我认为测试无法访问您的keywordsListView变量。在beforeEach函数上面声明keywordsListView变量,并在beforeEach中填充它,就像你当前拥有它一样。
$(function() {
var keywordsListView;
beforeEach(function(){
keywordsListView = new KeywordsListView({
el: $("#keywords_list")
})
})
it("should ...", function() {
expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
})
})
答案 1 :(得分:0)
Jasmine本身不包含任何夹具加载,html报告器为您提供了茉莉花不会触及的div#jasmine_content
,如果需要,您可以自己编写html。如果您需要能够加载更复杂的灯具,还有其他插件可以帮助您。我用过的唯一一个是jasmine-jquery。有了这个,您可以执行以下操作:
$(function() {
beforeEach(function(){
loadFixtures('category_keyword/categories.html');
keywordsListView = new KeywordsListView({
el: $("#keywords_list")
});
});
it("should ...", function() {
expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
});
});
请注意,jasmine-jquery希望您的灯具位于spec/javascripts/fixtures
,除非另有配置jasmine.getFixtures().fixturesPath = <something>
你可以做的另一件事是让骨干为你创建元素,而不是传入一个。当然,为此,你的视图需要渲染自己,而不是依赖于服务器生成的任何标记。这使您的视图也更加独立。
答案 2 :(得分:0)
加载灯具后,您必须调用骨干功能/方法,而不必为您的模型制作间谍。
然后您可以找到加载的HTML内容。
喜欢:
loadFixtures("/path/to/fixtures.html");
SpyOnObj.functionname();
expect($('body')).toHaveId("{ELEMENT_ID}");
我希望这会对你有所帮助。