1

konacha を使用して backbone.js アプリケーションの DOM テストを実行したいと考えています。そして、下のkonachaに関するいくつかのエントリを読みました.

これらのエントリは、ビューを作成して、以下のようにページ オブジェクトに配置する必要があることを示しています。

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

問題: 上記のコードの console.log は @view.el に対して "undefined" を示しますが、コードは実際には問題なく動作します。

誰かが私を助けることができれば、私は本当に適用します。

ここにいくつかの興味深いコードがあります。

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>

これらのコードでやりたいことは、Twitter のようなフォロー ボタンを処理することです。

前もって感謝します。

4

1 に答える 1

0

ビューが必要とするテンプレートをスペック自体に含めます。何かのようなもの:

#= 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

または、テンプレートが配置されている場所。

テンプレートがまだ定義されていない可能性があります。その場合、テンプレートが読み込まれる前にアプリが読み込まれる可能性があります。その場合は、代わりに、spec_helper で必要なアプリケーションを削除し、各仕様でテストしているビットを具体的に含めることができます。

于 2013-03-05T16:34:43.603 に答える