茉莉花:测试某个方法是否被另一个类中的另一个方法调用

时间:2019-01-07 05:12:10

标签: node.js typescript jasmine

我有以下2个课程

class B {
  public b() { return 1 }
}

class A {
  b: B = new B()
  public run() { return this.b.b() }
}

我尝试使用以下测试来测试类B的方法b(),但该测试无法正常工作

describe('A spy', () => {
  let a: A
  let b: B

  beforeEach(() => {
    a = new A()
    b = new B()
    spyOn(b, 'b')

    a.run()
  })

  it('tracks that the spy was called', () => {
    expect(b.b).toHaveBeenCalled()
  })
})

我是否误解了茉莉花的测试概念? 我还尝试了“ jasmine.createSpy”,它也无法正常工作

P.S。我确实尝试过手动测试,并确认已经调用了B类的方法b()。

1 个答案:

答案 0 :(得分:1)

b变量没有在任何地方使用,它与this.b中的a对象不同,因此不会调用b.b

应该是:

a = new A()
spyOn(a.b, 'b')
a.run()

expect(a.b.b).toHaveBeenCalled()