单元测试Asp.Net WebApi控制器

时间:2014-07-10 04:39:33

标签: c# asp.net-mvc unit-testing

我正在尝试对ApiController进行单元测试并设置当前HttpContext,但每次尝试设置控制器HttpContext.Current的请求信息时,似乎仍然为空。< / p>

以下是代码:

[TestMethod]
public void MakePayment()
{
     var config = new HttpConfiguration();
     var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/payment");
     var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
     var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "payment" } });

     var mockUserStore = new Mock<IUserStore<ApplicationUser>>();
     var mockUserManager = new Mock<ApplicationUserManager>(mockUserStore.Object);
     mockUserManager.Setup(x => x.GetUser(It.IsAny<string>())).Returns(new ApplicationUser());

     IPayPalService payPalService = new PayPalService(mockUserManager.Object);

     var paymentController = new PaymentController(payPalService);
     paymentController.ControllerContext = new HttpControllerContext(config, routeData, request);
     paymentController.Request = request;
     paymentController.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;

     Payment payment = paymentController.DepositMoney(50.00);

     Assert.AreEqual(payment.intent, "sale");
}

这里有什么我想念的吗?

0 个答案:

没有答案