【问题标题】:Mock method on a Mock Object in SpockSpock中模拟对象的模拟方法
【发布时间】:2015-08-05 20:10:42
【问题描述】:

我尝试使用 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() 处得到空值。是否可以模拟 getB() 方法来获取 B 的模拟对象?

所以我想做一些类似的事情

1 * a.getB() >> {mockB}

但我得到空异常

【问题讨论】:

标签: grails groovy spock


【解决方案1】:

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

附:我很惊讶在没有指定 global: true 的情况下模拟 A 的构造函数

【讨论】:

  • 是的,如果 global 为 true,则绝对需要间谍。但是我仍然收到上面代码的错误。最后,我更改了原始代码以支持单元测试。
猜你喜欢
  • 1970-01-01
  • 2021-09-17
  • 2016-05-23
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2019-08-29
  • 1970-01-01
相关资源
最近更新 更多