【问题标题】:How do you test a Backbone Marionnette method inside of onShow in Jasmine?你如何在 Jasmine 的 onShow 中测试 Backbone Marionnette 方法?
【发布时间】:2014-07-20 19:45:05
【问题描述】:

我正在尝试在 Backbone Marionette 中测试一个视图,但 onShow() 从未被调用,因此我无法测试在该方法中调用的方法。

views/test.coffee

onShow: () ->
  debugger # this never happens when I run the Jasmine tests
  alert "HI"

spec/javascripts/views/test_spec.coffee

  describe 'a test', ->

    beforeEach ->
      @view  = new window.TestView
      @view.render()

    it "does something", ->
      # not important

【问题讨论】:

    标签: backbone.js coffeescript jasmine marionette


    【解决方案1】:

    onShow() 通常仅在您将其显示在区域内时才会被调用。您有两个测试选项。

    1) 渲染后手动调用onShow

    @view.render();
    @view.onShow();
    

    2) 显示区域内的视图:

    你可以在你的测试文件中创建一个新区域,如果你不需要使用 DOM,只需添加一个分离的 DOM 元素,否则你可以只创建一个元素并将其放入 DOM 中。

    旁注*** 我不知道 CoffeeScript,所以下面的语法可能不正确!

    beforeEach ->
        @view  = new window.TestView
        @testRegion = new Backbone.Marionette.Region({el: document.createElement('div')})
        @testRegion.show(@view)
    

    【讨论】:

      【解决方案2】:

      你也可以触发onShow。抱歉没有 CoffeeScript。

      view.triggerMethod("show");
      

      【讨论】:

        猜你喜欢
        • 2013-08-13
        • 2012-06-27
        • 2015-02-15
        • 2013-07-14
        • 2012-06-03
        • 2014-01-29
        • 2013-04-19
        • 1970-01-01
        • 2021-11-17
        相关资源
        最近更新 更多