backbone.js не отображает вид с конача

Я хочу сделать некоторый тест DOM для моего приложения backbone.js с konacha. И я прочитал некоторые записи о коначе ниже.

Эти записи указывают, что я должен создать представление и поместить его в объект страницы, как показано ниже.

#= require spec_helper
describe "MyApp.Views.Relationships", ->
  beforeEach ->
  @view = new MyApp.Views.Relationships()
  @page.html(@view.el)
  console.log @view.el

Проблема: Но console.log в приведенном выше коде показывает "undefined" для @view.el, хотя на практике коды работают нормально.

Я действительно обращаюсь, если кто-то может мне помочь.

Вот некоторые интересные коды.

spec_helper.js.coffee
#= require application
#= require_tree ./support

mocha.ui('bdd')
mocha.ignoreLeaks()

beforeEach ->
  @page = $("#konacha")
  @sandbox = sinon.sandbox.create()

afterEach ->
  @sandbox.restore()

views/users/relationships.js.coffee
class MyApp.Views.Relationships extends Backbone.View

  el: '#relation-form'
  template: JST['users/relationships']

  initialize: ->
    console.log "init"
    @render()
    console.log @el


  render: ->
    @img = $('#loading-image').html()
    $(@el).html(@template({img: @img}))
    this

relationships.jst.eco
<button class="btn" disabled="disabled"><%- @img %></button>

profile.html.erb(extracted)
   #snip#
            <% if signed_in? and @user != current_user %>
              <div id="relation-form" class="action-button"></div>
            <% end %>
   #snip#
    <script type="text/template" id="loading-image">
      <%= image_tag('ajax-loader.gif') %>
    </script>
    <script type="text/javascript">
      $(function () {
        new MyApp.Views.Relationships()
      });
    </script>

то, что я хочу сделать с этими кодами, это обработать кнопку Follow как твиттер.

заранее спасибо.

1 ответ

Включите шаблон, который требуется для просмотра, в саму спецификацию. Что-то вроде:

#= require spec_helper
#= require templates/users/relationships

describe "MyApp.Views.Relationships", ->
    beforeEach ->
    @view = new MyApp.Views.Relationships()
    @page.html(@view.el)
    console.log @view.el

Или где ваши шаблоны находятся.

Возможно, что шаблон все еще будет неопределенным. Если это так, то приложение может быть загружено раньше, чем шаблон. Поэтому, если это так, вы можете альтернативно удалить приложение require в spec_helper и просто включить биты, которые вы тестируете, в каждую спецификацию.

Другие вопросы по тегам