因此,我有一个实用程序类,用于使用如下静态方法进行验证:
static validateX = { x ->
// some business logc
}
现在,我在命令对象中使用此静态闭包进行自定义验证:
class TestCommand {
String x
static constraints = {
x(validator: Utility.validateX)
}
}
当我在单元测试期间尝试模拟此自定义验证器时,就会出现问题。我尝试了很多事情,如下所示:
GroovyMock(Utility)
Utility.validateX(someVal) >> true
Utility.validateX.call(someVal) >> true
Utility.validateX >> { def x -> true }
但是这些都不起作用!
我找到了解决方法,可以将静态实用程序闭包更改为方法。当我将其更改为常规方法时,GroovyMock似乎可以正常工作。但是我宁愿不这样做,因为在我引用该方法的任何地方都必须使用&符号,这样我才能看到它使我的团队中的其他人感到困惑。
所以基本上,我的问题是如何在单元测试中模拟静态闭包?