我正在测试错误处理。我想要对mockedObject的第一个调用。foo()
抛出一个新的IOException,第二个抛出返回条。我尝试了以下代码,
mockedObject.foo() >>> [{throw new IOException()}, bar]
但是,当我运行测试时,我得到一个错误,说明闭包不能强制转换到Bar,
FooSpec$\uU$spock\u功能\u 0\u 1\u closure2无法强制转换为条
我怎么能嘲笑斯波克的这种行为?
编辑:在看到tim_yates引用的文档后,我将测试更改为,
mockedObject.foo() >>> firstBar >> {throw new IOException()} >> secondBar
这接近于测试我需要测试的内容。下面的代码引发了相同的异常,所以我猜Spock正在根据第一个对象返回设置模拟方法的返回类型。
mockedObject.foo() >>> {throw new IOException()} >> secondBar
您可以尝试拆分“then”块:
然后:1*mockedObject。foo()
.... (其他一些调用断言)
然后:1*mockedObject。foo()
我知道这个话题已经过时了,但也许有人还想找到解决办法。(Spock测试:根据调用顺序引发异常或值)请参阅:https://spockframework.org/spock/docs/1.0/interaction_based_testing.html调用顺序部分
下面是一个完整的工作示例:
@Grab('org.spockframework:spock-core:0.7-groovy-2.0')
@Grab('cglib:cglib:3.1')
@Grab('org.ow2.asm:asm-all:5.0.3')
import spock.lang.*
class MyTestSpec extends Specification {
def 'spec'() {
given:
def a = new A()
a.b = Mock(B) {
foob() >> { throw new Exception('aaa') } >> 1
}
when:
a.fooa()
then:
def e = thrown(Exception)
e.message == 'aaa'
when:
def r = a.fooa()
then:
r == 1
}
}
class A {
B b = new B()
Integer fooa() {
b.foob()
}
}
class B {
Integer foob() {
2
}
}
你应该能够做到:
mockedObject.foo() >>> {throw new IOException()} >> bar
(见这里的留档)
问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用
我很好奇是否可以在以下情况下使用orElseThrow(),或者是否有更Java的8种方法可以将其等效为1行?
问题内容: 我需要一个SP来返回多组结果。第二组结果将基于第一组结果的一列。 所以: 如何用我的SP返回@ myTable1和@ myTable2?这种语法完全正确吗? 抱歉,我仍然是SQL的新手… 编辑: 因此,我在下面的代码的最后一行看到错误:“必须声明标量变量“ @ myTable1”” 如果我突出显示并运行代码直到第二个代码,它就可以正常工作。 EDIT2: 解决了该问题。谢谢你们。 问题
我最近一直在学习lambda和streams,很早就被抛到了最深处。 我目前有一个书籍的数组列表,用户键入一个单词,如果这个单词等于书籍作者或标题,那么会调用并返回books toString(书籍的所有属性的格式都很好)。没有lambda很容易。但对于lambda,我似乎不知道如何才能把这一切都解决掉。 此外,使用lambda,我必须过滤掉数组中状态为“已损坏”或“已删除”的所有书籍。 问题是,
问题内容: 我正在尝试创建一种方法,从中可以查询数据库并检索整个表。 目前,如果我使用这些数据只是正常工作 中 的方法。但是,我希望该方法返回结果。 我正在了解当前代码。 我该如何实现? 问题答案: 您永远不要通过公共方法来回避。这很容易导致资源泄漏,因为您不得不保持语句和连接打开。关闭它们将隐式关闭结果集。但是,将它们保持打开状态将导致它们悬而未决,并且当它们打开过多时,将导致数据库用尽资源。
问题内容: 我试图在postgres函数内返回查询结果。我尝试了一下,并完美地工作了: 问题是我需要一些东西来返回以下结果: 我需要什么回报,或者应该改变什么才能实现这一目标? 问题答案: 这可以通过一个简单的SQL函数来完成: 可以在手册中找到更多详细信息和示例:http : //www.postgresql.org/docs/current/static/xfunc-sql.html#XFUN