0
找到了解決方法。底部看解決方案Easymock:問題模擬void DAO方法 - 意外的方法調用
好吧我一整天都在EasyMock監獄,我需要一些幫助走出去。 我有一個void save()方法,我正在嘲笑。
public void save(PurchaseOrder po);
PurchaseOrder的是,有兩個孩子
USPurchaseOrder
CAPurchaseOrder
這裏是我的JUnit測試代碼的抽象類
MyDAO myDAO = createMock(MyDAO.class);
PurchaseOrder usPurchaseOrder = new USPurchaseOrder(msgUS);
myDAO.save(usPurchaseOrder);
expectLastCall().atLeastOnce();
PurchaseOrder caPurchaseOrder = new CAPurchaseOrder(msgCA);
myDAO.save(caPurchaseOrder);
expectLastCall().atLeastOnce();
replay(myDAO);
//execute code that uses DAO
我得到以下錯誤:意外的方法調用MyDAO.save( USPurchaseOrder @ 1a70b8):
這裏唯一的問題是DAO簽名沒有需要USPurchaseOrder,只有了一個採購訂單,這是我進入。此外,
即使這樣做會產生同樣的錯誤
myDAO.save(new USPurchaseOrder(msgUS));
我在做什麼錯?
解決方法 好吧,我一直在刻苦攻讀這一點,雖然我不明白爲什麼我收到錯誤,我增加了anyObject()的代碼才能正常工作。
MyDAO myDAO = createMock(MyDAO.class);
myDAO.save(anyObject(OrderRequest.class));
myDAO.save(anyObject(OrderRequest.class));
replay(myDAO);
//execute code that uses DAO