我正在尝试为这段特殊代码创建一个EasyMock,这样innerfValue的类型为IJavaValue,它是IJavaObject的子类。我试过通过模拟innerfValue然后只是假设aJavaValue指向innerfValue并模拟sendmessage方法就好像它是一个innerfValue的方法一样来处理这个问题的常规方法,但是它还没有工作,当我到达当我这样做时,它给了我一个不兼容的返回值类型(在这种情况下,symbolvalue是我在模拟innerfValue对象上调用sendmessage方法后返回的模拟对象,而不是另一段代码中的symbolValue。 ):
EasyMock.expect(((IJavaObject)symbolValue).toString()).andReturn("aValue");
这是一段代码
IJavaObject aJavaValue = (IJavaObject)innerfValue.getValue();
IJavaObject symbolValue = (IJavaObject) ((IJavaObject)aJavaValue).sendMessage(
"toString", "()Ljava/lang/String;", null, thread, false);
value = symbolValue.toString();
答案 0 :(得分:7)
EasyMock无法模拟toString()方法。这就是我遇到这个问题的原因。
答案 1 :(得分:0)
我知道我的问题在哪里。
如果您使用的是EasyMock.createMockBuilder(XXX.class)
确保你记得addMockedMethod(“methodName”)。createMock();