我的Jasmine测试过去是通过的。但是,我实现了一个为一些常见视图提供功能的Base Backbone视图。在这之后,我无法通过下面的简单测试。似乎DOM元素(div)不存在,因此我的显示视图没有正确呈现。对于为什么会出现这种情况以及如何解决它,有什么想法或建议吗?
两个骨干视图,一个扩展到另一个:
var stockShowView = Base.extend({
tagName: 'div',
className: 'showSecurity',
template: _.template(showTpl),
....
render: function() {
this.$el.html(this.template({
stock: this.model.toJSON()
}));
}
....return stockShowView;
var Base = Backbone.View.extend({
initialize: function() {....//no render function
茉莉花测试
stock_showView = new stockShowView({model: model});
stock_showView.render();
expect(stock_showView.tagName).toEqual('div');
误差 Cannot read property 'length' of undefined
路由器 router.on('route:showPost', function(id) {
if (globals.stocks) {
var stockpost = new StockModel({_id: id});
stockpost.fetch({
reset: true,
success: function(stockpost) {
var stock_showView = new stockShowView({model: stockpost});
$("#view_box").html(stock_showView.render().el);
}
});
tagName元素应该用大写字母书写。试试这个:
expect(stock_showView.el.nodeName).toEqual("DIV");