当前位置: 首页 > 知识库问答 >
问题:

Spock中模拟对象上的模拟方法

楚宏胜
2023-03-14
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(){
 A a = new A(b)
 B b = a.getB()
}

所以我想做一些事情

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

但我得到了空异常

共有1个答案

邵飞宇
2023-03-14

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

附言。我很惊讶地嘲笑一个作品的构造函数而不指定global:true

 类似资料:
  • 如何模拟返回已强制转换的模拟对象的方法。 试验方法。

  • 我试图为一个类编写一个单元测试,这个类使用带有库中的的Google vision API。问题是,由于某种原因,我的模拟仍然调用真正的方法,然后抛出一个NPE,这破坏了我的测试。我以前从未在模拟上见过这种行为,我想知道我是不是做错了什么,是不是Spock/Groovy中有bug,还是与Google lib有关?

  • 我在spring boot应用程序中用groovy(spock)编写了一个集成测试。其中一个应用程序bean称为,它具有以下方法: 在类中还有其他方法。在我的集成测试中,我只想模拟该特定方法的响应。以以下方式: 我希望进行其他验证,但不是这次。基本上,我想实现这一点,但与斯波克。我想取消执行方法

  • 我有一个用注释的Groovy类,因此它得到一个私有的最终字段,我想测试它的用法。我想继续使用,而不是为了启用测试而进一步公开字段。 我正在使用Spock1.0编写测试,并尝试使用Spock的集成、模拟和截尾功能来完成测试。全局截尾可以帮助我截取调用以获得实际的实例,因此我目前的猜测是: 有趣的是,拦截实际上起作用了,确认类实际上获得了名为“dummy”的类型“logger”的对象

  • 问题内容: 我熟悉其他语言的其他模拟库,例如Java中的Mockito,但是Python的库使我的生活变得混乱。 我有以下课程想测试。 在我的测试中,我想确保在执行时调用了,并使用正确的参数调用了它。我不想跑步,因为它会做危险的事情。 我完全不确定该如何开始。Mock的文档难以理解,而且我不确定该模拟什么或如何模拟它。 在单独保留功能的同时,如何模拟该功能? 问题答案: 我想你要找的是 这是小描述

  • 1)创建groovy项目 2)创建接口: 3)创建spock测试: 有没有更好的方法来“解释”spock被模仿函数的最后一个参数是vararg,因此可以省略它?