我的茉莉花测试过去了。但是,我实现了一个Base Backbone视图,它为一些常见视图提供了功能。在此之后,我无法通过下面的简单测试来通过。似乎DOM元素(div)不存在,因此我的show视图无法正确呈现。关于为什么会发生这种情况的任何想法或建议以及解决方法?
两个主干视图,一个延伸到另一个:
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);
}
});
答案 0 :(得分:0)
您应该使用大写字母编写tagName元素。试试这个:
expect(stock_showView.el.nodeName).toEqual("DIV");