回避策を見つけました。一番下の解決策を参照してください
OK、私は一日中 EasyMock 刑務所にいました。私はモックアウトしている void save() メソッドを持っています。
public void save(PurchaseOrder po);
PurchaseOrder は、2 つの子を持つ抽象クラスです。
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
次のエラーが表示されます: Unexpected method call MyDAO.save(USPurchaseOrder@1a70b8):
ここでの唯一の問題は、DAO 署名が USPurchaseOrder を必要とせず、私が渡している PurchaseOrder だけを必要とすることです。
これをしても同じエラーが発生します
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