Jef*_*rey 4 java groovy mocking
我正在尝试使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
我能在groovy中实际做到这一点吗?如果是这样,我该怎么办呢?
谢谢,杰夫
问题是被模拟的类是一个类而不是接口.为了使用proxyDelegateInstance方法,需要使用接口类型(或groovy类).代理类实际上不是MyJavaClass类型,但它是一个代理,并且groovy的duck typing可以处理,而Java则不能.