使用spock的Stub动态查找器

时间:2014-12-04 09:18:32

标签: java unit-testing grails groovy spock

我需要 Spock 测试的帮助。 我试图存根Domain Object的动态查找器(findById)。 我不能使用像:

这样的代码
ObjectDomain.metaClass.static.findById = { -> new ObjectDomain()}

因为我在测试的其他部分使用findsById方法,如果我使用它,我会得到误报。

有人知道使用Spock存根动态查找器的最佳方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:7)

参数编号和类型必须在您的元类方法和实际方法之间匹配。您添加了一个no-arg findById()方法,但是您正在使用id和Map调用重载方法。因此,您需要更改闭包参数以匹配:

ObjectDomain.metaClass.static.findById = { id, Map args -> new ObjectDomain()}