示例#1
0
 public HttpResponseMessage Post(PayRequestDto PayReq)
 {
     try
     {
         if (ModelState.IsValid)
         {
             var payState    = ipay.ProcessPayment(PayReq);
             var payResponse = new PayResponseDto()
             {
                 IsProcessed = payState.PayState == PayStateEnum.Processed,
                 paystate    = payState
             };
             if (payResponse.IsProcessed)
             {
                 return(Request.CreateResponse(HttpStatusCode.OK, payResponse));
             }
             else
             {
                 return(Request.CreateResponse(HttpStatusCode.InternalServerError, new { error = "Payment could not be processed" }));
             }
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, ModelState));
         }
     }
     catch (Exception)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError));
     }
 }
        public void TestpayReqService(PayRequestDto payReqDto, PayStateDto cheapGateResDto, int cheapGateCount, PayStateDto expGateResponseDto, int ExpGateCount, PayStateEnum expPayStateEnum)
        {
            cheapPayGateway.Setup(c => c.ProcessPayment(payReqDto)).Returns(cheapGateResDto);
            expensivePayGateway.Setup(c => c.ProcessPayment(payReqDto)).Returns(expGateResponseDto);
            var payStateDto = PayReqService.ProcessPayment(payReqDto);

            Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(payStateDto);
            Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(payStateDto.PayState, expPayStateEnum);
            cheapPayGateway.Verify(c => c.ProcessPayment(payReqDto), Times.Exactly(cheapGateCount));
            expensivePayGateway.Verify(c => c.ProcessPayment(payReqDto), Times.Exactly(ExpGateCount));
        }