我试图在C#WEB API REST服务中模拟OWIN上下文,但OWIN上下文似乎总是为空.我正在使用moq和.NET framework 4.5.2.
这是我试图测试的控制器方法:
public class CustomerController : ApiController
{
// GET: api/Customer/n
[HttpGet]
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = Actions.View, Resource = Resources.Self)]
public IHttpActionResult Get(int id)
{
if (id <= 0)
return BadRequest();
ClaimsPrincipalPermission.CheckAccess(id.ToString(),"UserId");
string jsonResponse = string.Empty;
HttpStatusCode returnCode = this.ForwardGetRequestToWallet(String.Format("customer/gethistory/{0}", id), out jsonResponse);
if (returnCode== HttpStatusCode.OK)
return Ok(jsonResponse);
return StatusCode(returnCode);
}
Run Code Online (Sandbox Code Playgroud)
并且在一个帮助器类中,出现错误的代码,在controller.Request.GetOwinContext调用:
public static HttpClient GetClient(this ApiController controller)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = controller.Request.Headers.Authorization;
var test = controller.Request.GetOwinContext().Request.RemoteIpAddress;
return client;
}
Run Code Online (Sandbox Code Playgroud)
我的测试初始化: …