Node.js Jasmine:测试一个方法是否被另一个类中的另一个方法调用

Node.js Jasmine:测试一个方法是否被另一个类中的另一个方法调用,node.js,typescript,jasmine,Node.js,Typescript,Jasmine,我有两门课,如下所示 class B { public b() { return 1 } } class A { b: B = new B() public run() { return this.b.b() } } 我试图使用下面的测试测试类b中的did方法b(),但测试不起作用 describe('A spy', () => { let a: A let b: B beforeEach(() => { a = new A() b =

我有两门课,如下所示

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

class A {
  b: B = new B()
  public run() { return this.b.b() }
}
我试图使用下面的测试测试类b中的did方法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的测试概念? 我还试过“jasmine.createSpy”,它也不起作用

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

另外,我尝试手动测试它,并确认已调用了类b中的方法b()

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

应该是:

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

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

a、 run()不是间谍。你的意思是写“expect(b.b).tohavebeincall()”吗?您也可以使用类似“spyOn(a,'run')和.callThrough()@dmcgrandle”之类的东西对其进行不同的设置。对不起,输入错误是的,我的意思是写EXCT(b.b)。TohaveBeenCall()我还使用了“spyOn(a,'run')。和.callThrough()”,它也不起作用