【问题标题】:Unit Testing .net Web Api. Setting Query String values单元测试.net Web API。设置查询字符串值
【发布时间】:2013-06-28 15:30:35
【问题描述】:

我的 ApiController HttpGet 操作的第一行是这样的

var returnOnlyDefault = (Request.GetQueryNameValuePairs()
    .Any(kv => ((kv.Key.ToLower() == "defaultview") && (kv.Value.ToLower() == "true"))));

这将查找“defaultview”的查询字符串值。代码“有效”,但我无法对其进行单元测试。

在我的单元测试中,我正在执行以下操作

var controller = new Controllers.ViewsController { Request = new HttpRequestMessage() };
controller.Request.Properties.Add(new KeyValuePair<string, object>("defaultview", "true"));

请求 uri 当然是空的。测试失败,因为它没有获取查询字符串值。

【问题讨论】:

    标签: c# asp.net-mvc rest


    【解决方案1】:

    你应该设置请求Uri:

    controller.Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:51083/?param1=someValue&param2=anotherValue");
    

    现在,您的 ApiController 中的 get querystring 参数可以按预期工作:

    var queryStringParams = Request.GetQueryNameValuePairs().ToList();
    var param1 = queryStringParams.FirstOrDefault(kv => kv.Key.Equals("param1")).Value;
    

    param1 现在是 'someValue' 并且单元测试运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 2014-04-14
      • 2021-12-03
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多