你如何在 Jasmine 的 onShow 中测试 Backbone Marionnette 方法?

Posted

技术标签:

【中文标题】你如何在 Jasmine 的 onShow 中测试 Backbone Marionnette 方法?【英文标题】:How do you test a Backbone Marionnette method inside of onShow in Jasmine? 【发布时间】: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

【问题讨论】:

【参考方案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");

【讨论】:

以上是关于你如何在 Jasmine 的 onShow 中测试 Backbone Marionnette 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jasmine 测试中测试 $scope?

如何使用node.js jasmine设置断点?

Karma-Jasmine之安装与实例详解

使用 Jasmine 测试 Node 项目

如何在 Jasmine 中使用 React 测试工具

如何在 jasmine 中编写单元测试用例?