【发布时间】:2017-01-07 15:59:43
【问题描述】:
我的目标是在 Visual Studio 中针对我的 Web API 运行测试。正如我在网上某处看到的那样,我正在尝试调用控制器。
var controller = new PriceFeedController();
dynamic item = controller.Get(1, 1);
controller.Post(new PostPriceFeed { Item_Id = 1, Store_Id = 1, Price = decimal.Parse(item.pricefeed.price) + 10 });
dynamic itemprice_updated = controller.Get(1, 1);
Assert.AreEqual(decimal.Parse(item.pricefeed.price), decimal.Parse(itemprice_updated.pricefeed.price));
主要问题是关于 OWIN。我的控制器以这样的开头:
[HttpGet]
public IHttpActionResult Get(long storeId, long itemId)
{
//busco o id do usuário
var user_id = SessionState.GetUserIDByContext(Request.GetRequestContext());
//...
}
当我尝试运行测试时,Request 为空,我收到错误消息。
有人知道如何做我想做的事吗?
编辑
在@Peter 提示之后,我可以插入请求,但我的声明不存在。
ClaimsPrincipal principal = httpRequestContext.Principal as ClaimsPrincipal;
return long.Parse(principal.Claims.Where(c => c.Type == "user_id").Single().Value);
“user_id”不存在,但我正在传递令牌。
【问题讨论】:
-
我正在使用承载令牌顺便说一句
标签: c# unit-testing asp.net-web-api2 owin