我正在尝试使用groovy的MockFor和proxyDelegateInstance来模拟带有构造函数参数的Java类,但是我似乎无法正确理解它。我的Java类如下:

class MyJavaClass {
   private MyObject myObj
   public MyJavaClass(MyObject myObj) {
      this.myObj = myObj;
   }
}

class MyGroovyTest {
    @Test
    void testMyJavaClass() {
        def mock = new MockFor(MyJavaClass)
        MyJavaClass mjc = new MyJavaClass()
        def mockProxy = mock.proxyDelegateInstance([mjc] as Object[])
        // if I pass mockProxy to anything, I get an error that a matching
        // constructor could not be found. I've tried variations on the args
        // to proxyDelegateInstance (such as using mjc as a single arg rather than
        // an array of one element)
    }

}

我可以实际使用groovy吗?如果是这样,我该怎么办?

谢谢,
杰夫

最佳答案

问题在于被模拟的类是一个类,而不是一个接口。为了使用proxyDelegateInstance方法,需要使用接口类型(或groovy类)。代理类实际上不是MyJavaClass类型,而是代理,而Groovy的鸭子类型可以处理,而Java无法。

09-26 15:11