【发布时间】:2019-03-30 20:54:23
【问题描述】:
如何在 Spock 中模拟(或监视)带注释的类,以便断言依赖于注释的逻辑?
Groovy(也可能是 Java)中的一个人为示例显示了一种检查对象集合中特定注释值的方法。想象一下在通过注解过滤后执行的更复杂的逻辑,我想通过模拟集合中的对象来断言。
@FooAnnotation('FOOBAR')
class MainGroovy {
def findFOOBARs(Object... candidates) {
candidates.findAll{ it.class.getAnnotation(FooAnnotation)?.value() == 'FOOBAR' }
//Do something with the filtered objects.
}
}
传递 Spy 会使注释过滤器失败,因此无法断言任何后续逻辑。
@Unroll
def test() {
given:
def foobars = mg.findFOOBARs(mg, new Object(), 'STRING')
expect:
foobars.size() == 1
where:
mg << [new MainGroovy(), Spy(MainGroovy)]
}
【问题讨论】:
标签: java groovy annotations mocking spock