【发布时间】:2015-10-27 15:58:22
【问题描述】:
我正在测试错误处理。我希望第一次调用mockedObject.foo() 抛出一个新的 IOException,第二次调用返回 bar。我尝试了以下代码,
mockedObject.foo() >>> [{throw new IOException()}, bar]
但是,当我运行测试时,我收到一个错误,指出不能将闭包强制转换为 Bar,
FooSpec$_$spock_feature_0_1_closure2 不能转换为 Bar
如何使用 Spock 模拟这种行为?
编辑:看到 tim_yates 引用的文档后,我只是将测试更改为,
mockedObject.foo() >>> firstBar >> {throw new IOException()} >> secondBar
这已经足够接近测试我需要测试的内容了。下面的代码抛出了同样的异常,所以我猜 Spock 是根据第一个对象返回来设置模拟方法的返回类型。
mockedObject.foo() >>> {throw new IOException()} >> secondBar
【问题讨论】: