我有以下类(class),我正在尝试使用spock进行模拟:

final class A{
    private B b
    public getB(){
       return b
    }
    public A(B b){
       this.b = b
    }
}

并且我尝试使用以下代码模拟此类,并且该类正在运行。
def "test"(){
    def mockA = GroovyMock(A)
    when:
    service.x()
    then:
    1 * new A(*_) >> {mockA}
}

下面是我的x()方法:
x(){
 A a = new A(b)
 B b = a.getB()
}

现在,我想模拟a.getB()以获得B的模拟对象。我尝试为B创建模拟,但在a.getB()处获取的是null。是否可以模拟getB()方法以获得B的模拟对象?

所以我想做些类似的事情
1 * a.getB() >> {mockB}

但我得到空异常

最佳答案


def mockA = GroovyMock(A) >> { getB() >> GroovyMock(B)}

附言我很惊讶在不指定global: true的情况下 mock A作品的构造函数

10-04 10:09