使用spock的Stub动态查找器

xal*_*3pa 4 java grails groovy unit-testing spock

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

ObjectDomain.metaClass.static.findById = { -> new ObjectDomain()}
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢.

Bur*_*ith 7

参数数量和类型必须在您的元类方法和实际方法之间匹配.您添加了一个无参数findById()方法,但是您正在使用id和Map调用重载方法.所以你需要更改闭包args以匹配:

ObjectDomain.metaClass.static.findById = { id, Map args -> new ObjectDomain()}
Run Code Online (Sandbox Code Playgroud)