2012-07-30 145 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()。