groovy - 使用 Spock 在多个返回结果中抛出 IOException

标签 groovy spock

我正在测试错误处理。我要第一个电话mockedObject.foo()抛出一个新的 IOException,第二个返回 bar。我尝试了以下代码,

mockedObject.foo() >>> [{throw new IOException()}, bar]

但是,当我运行测试时,我收到一个错误,指出无法将闭包转换为 Bar,

FooSpec$_$spock_feature_0_1_closure2 cannot be cast to Bar



我如何用 Spock 模拟这种行为?

编辑:在看到 tim_yates 引用的文档后,我只是将测试更改为,
mockedObject.foo() >>> firstBar >> {throw new IOException()} >> secondBar

这足以测试我需要测试的内容。下面的代码抛出了相同的异常,所以我猜 Spock 正在根据第一个对象返回设置模拟方法的返回类型。
mockedObject.foo() >>> {throw new IOException()} >> secondBar

最佳答案

你应该能够做到:

mockedObject.foo() >>> {throw new IOException()} >> bar

( See here in the documentation )

关于groovy - 使用 Spock 在多个返回结果中抛出 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33372706/

相关文章:

java - 将对象转换为 json 时覆盖属性名称

jenkins - jenkins dsl 中的 booleanParam

groovy - 如何在 Spock 中断言列表仅包含某个特定元素?

java - 使用 Gradle 和 Groovy/Spock 测试 Java 6 库或应用程序

grails - 如何使用 Spock 使用 @Autowired 测试类

GString token 的正则表达式

java - jar 的 Gradle 自定义任务

grails - 如何在Groovy中最好地计算嵌套对象

java - 用 spock 模拟的值不会转移到 Kotlin 吗?

testing - 无需设置即可运行特定的 Spock 测试?