Spock中模拟对象的模拟方法

时间:2015-08-05 20:10:43

标签: grails groovy spock

我有以下课程,我试图使用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}

但我得到空例外

1 个答案:

答案 0 :(得分:0)

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

P.S。我很惊讶在没有指定global: true

的情况下嘲笑A作品的构造函数