你如何模拟 GroovyTestCase 中的方法?

How do you mock a method in GroovyTestCase?

我一直试图通过 groovy 测试教程弄清楚存根和模拟,但无济于事。我试图存根(或模拟,我不太确定术语)这种方法,但我无法弄清楚如何真正获得正确的语法。我会很感激一些帮助。我正在使用 groovy 2.4.5

public class foo {
    public static void main(String[] args){
        method1();
    }

    public static void method1(){
    //do stuff
        Object baz = new Object();
        method2(baz);
    }
    public static void method2(Object baz){
        //do stuff
    }
}


class FooTest extends groovy.util.GroovyTestCase {
    void testMainLoop(){
        def stubMethod2 = new StubFor(foo);
        stubMethod2.ignore.method2
        stubMethod2.use {
            foo.method1();
        }
    }
}

此代码抛出错误:

groovy.lang.MissingPropertyException: No such property: method2 for class: groovy.mock.interceptor.Ignore
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:87)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
at fooTest.testMainLoop(fooTest.groovy:14)

你应该使用:

stubMethod2.ignore('method2')

比:

stubMethod2.ignore.method2

能否说明一下您想要实现的目标?

顺便说一句:我建议使用 spock 而不是 groovy 内置测试。