加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 单元测试.net Web Api.设置查询字符串值

发布时间:2020-12-16 00:05:16 所属栏目:百科 来源:网络整理
导读:我的ApiController HttpGet动作的第一行就是这个 var returnOnlyDefault = (Request.GetQueryNameValuePairs() .Any(kv = ((kv.Key.ToLower() == "defaultview") (kv.Value.ToLower() == "true")))); 这将查找“defaultview”的查询字符串值.代码“有效”,但
我的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当然是null.测试失败,因为它没有获取查询字符串值.

解决方法

您应该设置请求Uri:

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

现在,ApiController中的get querystring params按预期工作:

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

param1现在是’someValue’并且单元测试运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读