2011-08-27 76 views
1

我告訴模擬對象等待命令的方法: mockObject.registerSQLDriver(isA(SomeName.class));EasyMock:isA()失敗,在正確的類

在運行時方法正好與SomeName類的實例調用,但測試失敗,告訴「意外的方法調用registerSQLDriver()」

什麼會導致這個問題?

下面是代碼:

resetToDefault(_SQLDriverManager); 
_SQLDriverManager.registerSQLDriver(isA(SQLDriver.class)); 
expectLastCall().anyTimes(); 
replay(_SQLDriverManager); 
+0

錯誤是在第73行,或56,或者也許是865.沒有代碼,這很難說。也許你告訴你的模擬這個方法會被調用一次,而實際上它被稱爲多次。 –

+0

我添加了代碼 – damluar

+0

錯誤消息顯示「Unexpected method call registerDriver()」。你嘲笑了「registerSQLDriver」方法。這些方法不一樣。 –

回答

0

也許,你嘲諷一個實例,並測試另一個實例。 要檢查這個你應該在模擬創建添加name參數:

Comparable<String> mock01 = EasyMock.createMock("M1", Comparable.class); 
Comparable<String> mock02 = EasyMock.createMock("M2", Comparable.class); 

EasyMock.expect(mock01.compareTo(EasyMock.isA(String.class))).andReturn(1); 
EasyMock.replay(mock01, mock02); 

mock02.compareTo("Test"); 

EasyMock.verify(mock01, mock02); 

在這種情況下,測試將失敗與消息:

意外的方法調用M2.compareTo(「測試」)代替

意外甲基od調用Comparable.compareTo(「測試」)

相關問題