2012-07-30 27 views
2

我想为这段特定的代码创建一个EasyMock,例如innerfValue是IJavaValue类型,它是IJavaObject的子类。我已经尝试了通过嘲讽innerfValue来处理这个问题的常规方法,然后假设aJavaValue指向innerfValue并嘲弄sendmessage方法,就好像它是innerfValue的一个方法一样,但是它并没有工作,并且当我到达结束它给我一个不兼容的返回值类型,当我这样做(在这种情况下,符号值是一个模拟对象,我在我的模拟innerfValue对象上调用sendmessage方法后返回,而不是作为另一部分代码中的symbolValue的saem ):Easymock不兼容的返回值类型错误

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

1)你不需要在你的单元测试中投入期望。模拟'symbolValue'应该已经有'toString'方法。 – DoctorRuss 2012-07-31 08:24:00

+0

2)它现在的工作方式是什么? “不兼容的返回值类型”:这是否意味着它会返回一个值,但不是您想要的值?或者它没有返回任何值? – DoctorRuss 2012-07-31 08:25:09

+0

在我的junit失败追踪中,它声明“java.lang.illegalStateException:不兼容的返回值类型”。至于什么错误实际上,我不是100%确定。我想这是我的问题。 – KWJ2104 2012-07-31 16:41:36

回答

5

EasyMock的不能嘲笑toStri ng()方法。这就是我遇到问题的原因。

0

我明白我的问题所在。

如果您正在使用EasyMock.createMockBuilder(XXX.class)

请务必记得addMockedMethod( “方法名”)createMock()。