如何使用 RhinoMocks 模拟以下行为?
被测方法调用接口上的 ReceivePayment 方法。
public void TestedMethod(){
bool result = interface.ReceivePayment();
}
接口有 CashAccepted 事件。如果此事件已被多次调用(或通过某个条件),ReceivePayment 应返回 true。
如何完成这样的任务?
更新。
现在我执行以下操作:
UpayError error;
paymentSysProvider.Stub(i => i.ReceivePayment(ticketPrice,
App.Config.SellingMode.MaxOverpayment, uint.MaxValue, out error))
.Do( new ReceivePaymentDel(ReceivePayment));
paymentSysProvider.Stub(x => x.GetPayedSum()).Return(ticketPrice);
session.StartCashReceiving(ticketPrice);
paymentSysProvider.Raise(x => x.CashInEvent += null, cashInEventArgs);
public delegate bool ReceivePaymentDel(uint quantityToReceive, uint maxChange, uint maxTimeout, out UpayError error);
public bool ReceivePayment(uint quantityToReceive, uint maxChange, uint maxTimeout, out UpayError error) {
Thread.Sleep(5000);
error = null;
return true;
}
StartCashReceiving 立即返回,因为里面有一个任务启动。但是下一行:paymentSysProvider.Raise(...) 正在等待 ReceivePayment 存根的完成!