RhinoMock을 사용하여 다음 동작을 에뮬레이트하는 방법은 무엇입니까?RhinoMock에서 지정된 조건에 따라 메서드에서 값을 반환하는 방법은 무엇입니까?
테스트 된 메서드는 인터페이스에서 ReceivePayment 메서드를 호출합니다.
public void TestedMethod(){
bool result = interface.ReceivePayment();
}
인터페이스에 CashAccepted 이벤트가 있습니다. ReceivePayment shoud는이 이벤트가 여러 번 (조건에 의해) 호출 된 경우 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 스텁 완료를 기다리고 있습니다!
고맙습니다. Em ... 글쎄, 나는 그 수업의 복잡한 행동을 시험하려고 노력하고있어. 지정된 조건이 충족되면 ReceivePayment는 true를 반환해야합니다. 조건을 만족 시키려면 CashAccepted 이벤트를 발생시켜야합니다. – EngineerSpock