Stubbing Backbone类构造函数与Jasmin和Sinon

Stubbing Backbone Class constructor with Jasmin and Sinon

本文关键字:Jasmin Sinon 构造函数 Backbone Stubbing      更新时间:2023-09-26

在以下模块中:

@APP.module "LeftSidebar", (LeftSidebar, APP, Backbone, Marionette) ->
API =
  initialize: ()->
    @controller = new LeftSidebar.Controller
LeftSidebar.addInitializer ()->
  API.initialize()

我想测试调用APP.LeftSidebar.addInitializer()LeftSidebar.Controller是否初始化。我尝试过使用以下规范,但@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()

做这件事的正确方法是什么?

  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()