是否可以使用GroovyMock模拟闭包?

时间:2018-08-23 15:50:53

标签: grails groovy grails-2.0

因此,我有一个实用程序类,用于使用如下静态方法进行验证:

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似乎可以正常工作。但是我宁愿不这样做,因为在我引用该方法的任何地方都必须使用&符号,这样我才能看到它使我的团队中的其他人感到困惑。

所以基本上,我的问题是如何在单元测试中模拟静态闭包?

0 个答案:

没有答案