2015-05-15 6 views
0

Мои тесты 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); 
      } 
     }); 
+0

без полного кода невозможно рассказать. больше, в идеале в jsFiddle –

+0

Да, вы правы. Однако, это много кода. Я предполагаю, что мой главный вопрос заключался в том, что при вызове .render(), как указано выше, является ли Jasmine окунанием в представление Base для функции рендеринга, а не экспликацией stockShowView? Используется ли маршрутизатор Backbone, поскольку у меня есть оператор if (добавляется к вопросу)? Или просто пытается отобразить файл stock_showView? – snewc

ответ

0

Вы должны написать элемент tagName с прописными буквами. Попробуйте следующее:

expect(stock_showView.el.nodeName).toEqual("DIV"); 
+0

А также вы можете использовать эту статью http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html очень хороший учебник для начинающих –