小编Gra*_*amJ的帖子

无法在C#WEB API REST服务单元测试中模拟Owin上下文

我试图在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)

我的测试初始化​​: …

c# unit-testing moq owin

3
推荐指数
1
解决办法
3341
查看次数

标签 统计

c# ×1

moq ×1

owin ×1

unit-testing ×1