backbone.js не отображает вид с конача
Я хочу сделать некоторый тест DOM для моего приложения backbone.js с konacha. И я прочитал некоторые записи о коначе ниже.
- https://github.com/markbates/informit_articles/blob/master/article_2_konacha/article_2_konacha.md
- http://www.slideshare.net/markykang/testing-javascriptcoffeescript-with-mocha-and-chai
Эти записи указывают, что я должен создать представление и поместить его в объект страницы, как показано ниже.
#= 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 и просто включить биты, которые вы тестируете, в каждую спецификацию.