你如何在GroovyTestCase中模拟一个方法?

时间:2015-10-13 04:04:04

标签: java unit-testing groovy mocking

我一直试图弄清楚通过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)

1 个答案:

答案 0 :(得分:1)

你应该使用:

stubMethod2.ignore('method2')

比:

stubMethod2.ignore.method2

您能澄清一下您想要达到的目标吗?

BTW:我建议使用spock而不是groovy内置测试。