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)
}
将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规则等价物的方法吗? 非常感谢。