我有以下类(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作品的构造函数