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

Spock框架中的嘲笑

沈弘盛
2023-03-14
class MyServiceSpec extends Specification {
    private MyService myService
    private MyDAO myDAO

    def setup() {
        myDAO = Mock(MyDAO)
        myService = new MyServiceImpl(myDAO)
    }

    def "Should get something"() {
        given:
        def user = Mock(User)
        def date = now()
        myDAO.getUsersSomethingFromDate(_ as User, _ as LocalDate) >> [ Mock(Something) ]

        when:
        myService.getUsersSomethingFromDate(user, date)

        then:
        1 * myDAO.getUsersSomethingFromDate(_ as User, _ as LocalDate)
    }
}
    def setup() {
        myDAO = Mock(MyDAO) {
            getUsersSomethingFromDate(_ as User, _ as LocalDate) >> [ Mock(Something) ]
        }
        myService = new MyServiceImpl(myDAO)
    }

共有1个答案

惠志
2023-03-14

将mock与调用计数检查相结合存在一个问题,因为那时没有调用mock。

您可以用这种方式重写您的组合测试以使其工作:

def "Should get something"() {
        given:
        def user = Mock(User)
        def date = now()

        when:
        myService.getUsersSomethingFromDate(user, date)

        then:
        1 * myDAO.getUsersSomethingFromDate(_ as User, _ as LocalDate) >> [ Mock(Something) ]
}

参见http://spockframework.org/spock/docs/1.3/all_in_one.html#_combining_mocking_and_stubbing

 类似资料:
  • 我不明白Spock测试中Mock、Stub和Spy之间的区别,我一直在网上看的教程也没有详细解释它们。

  • 在helper类的静态方法中调用时,它会抛出一个NPE。我所做的是嘲笑MarkupMaker和它的返回值(一个Markup实例)。最后,我希望调用标记实例的。无论我做什么-的调用都是抛出一个NPE。我找不到任何文档告诉我如何在spock中详细模拟方法调用值。 编辑:我添加了示例。的调用返回null,即使我在spock测试中对其进行了嘲弄。 test.groovy java(执行模拟对象的方法) j

  • 从IDEA13.1.x升级到14.x(14.0.2)之后,我发现对Spock框架、Mock()和Stub()方法的支持变得更差了。 更具体地说,我指的是使用闭包进行stubk/mocking的内联方法,比如: IDEA13意识到了stubbed类型的可用方法,这在下面的屏幕截图中可见。 而IDEA14缺少这个功能,这真的是一个遗憾。下面的屏幕截图显示了它。 方法下划线并变灰。IDE似乎不知道发生了

  • 我试图编写一个Spock规范,在这里我想验证一个用三个参数调用的方法。我根本不关心前两个,任何参数类型的实例都可以。我试图使用Spock通配符参数匹配,但不断遇到问题。我的验证如下所示: 这里是一个mock,UploadedPackage和PackageImportResponse.builder是预期的参数;在更改调用SaveService的代码之前,我试图先进行一个有效的测试。 我还尝试省略类

  • 更新 更准确地说。我想知道这两个列表是否有相同的对象,两个列表都没有额外的对象,顺序无关紧要。例如:

  • 我们实际上使用了JUnit和FakeSftpServerRule来测试我们定制的SFTP客户端。效果很好。 最后,我们希望摆脱junit,转而使用spock框架,因为我们试图迁移到groovy。 你们知道FakeSftpServerRule的等价物吗?或者,你们知道把junit规则“转换”成spock规则等价物的方法吗? 非常感谢。