【问题标题】:Stubbing Backbone Class constructor with Jasmin and Sinon使用 Jasmin 和 Sinon 存根主干类构造函数
【发布时间】:2015-06-04 19:40:23
【问题描述】:

在以下模块中:

@APP.module "LeftSidebar", (LeftSidebar, APP, Backbone, Marionette) ->

API =
  initialize: ()->
    @controller = new LeftSidebar.Controller

LeftSidebar.addInitializer ()->
  API.initialize()

...我想测试LeftSidebar.Controller 是否在调用APP.LeftSidebar.addInitializer() 时被初始化。我尝试使用以下规范,但 @spy.calledWithNew() 返回 false:

describe "LeftSidebar app", ->
  describe "initialization", ->
    beforeEach ->
      @spy = sinon.spy(APP.LeftSidebar, "Controller")
      APP.LeftSidebar.addInitializer()

  it "initializes LeftSidebar.Controller", ->
    expect(@spy.calledWithNew()).toBeTruthy()

这样做的正确方法是什么?

【问题讨论】:

    标签: javascript backbone.js jasmine marionette sinon


    【解决方案1】:
    1. 改为监视initialize
    2. 您缺少要测试的初始化,请将其添加到测试中。
    describe "LeftSidebar app", ->
      describe "initialization", ->
        beforeEach ->
          @spy = sinon.spy(@controller, "initialize")
          // APP.LeftSidebar.addInitializer() // this does nothing, drop it
    
      it "initializes LeftSidebar.Controller", ->
        new @controller();
        expect(@controller.initialize.calledOnce).toBeTruthy()
    

    【讨论】:

    • 这样就可以了...感谢简单而正确的回答!
    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 2018-06-18
    • 2016-09-17
    • 2020-08-26
    • 1970-01-01
    • 2016-03-31
    • 2013-10-02
    • 2021-10-06
    相关资源
    最近更新 更多