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 的“未定义”,尽管代码在实践中运行良好。

如果有人可以帮助我,我真的很高兴。

这是一些感兴趣的代码。

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 中的 require 应用程序,并只在每个规范中专门包含您正在测试的位。

于 2013-03-05T16:34:43.603 回答