使用 EasyMock 進行資料庫層單元測試時,常需 Mock ResultSet 以模擬查詢結果。提問者提供的測試類與被測類截圖顯示,核心難點在於 ResultSet 的介面方法(next()、getString() 等)需按呼叫順序預設回傳值。
ResultSet 模擬物件:ResultSet mockRs = EasyMock.createMock(ResultSet.class);EasyMock.expect(mockRs.next()).andReturn(true).times(n).andReturn(false); 模擬多行資料迭代。EasyMock.expect(mockRs.getString("colName")).andReturn("value");EasyMock.replay(mockRs); 進入重放模式,再注入被測類。補充截圖顯示的正確配置:確保 PreparedStatement 的 executeQuery() 回傳該 mockRs,並驗證 verify() 所有預期呼叫均已發生。
