Мои тесты Jasmine, используемые для прохождения. Однако я реализовал представление Base Backbone, которое обеспечивает функциональность для нескольких общих представлений. После этого я не могу пройти простой тест ниже. Кажется, что элемент DOM (div) не существует, поэтому мое представление просмотра неправильно отображается. Любые мысли или рекомендации о том, почему это происходит, и способы его решения?Жасмин/магистраль
Два Магистральные Views, один простирается от другого:
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);
}
});
без полного кода невозможно рассказать. больше, в идеале в jsFiddle –
Да, вы правы. Однако, это много кода. Я предполагаю, что мой главный вопрос заключался в том, что при вызове .render(), как указано выше, является ли Jasmine окунанием в представление Base для функции рендеринга, а не экспликацией stockShowView? Используется ли маршрутизатор Backbone, поскольку у меня есть оператор if (добавляется к вопросу)? Или просто пытается отобразить файл stock_showView? – snewc