jcv*_*dan 5 .net c# asp.net-web-api
我正在尝试为我的 web api 控制器编写一些单元测试,我需要测试 cookie 是否被正确检索,所以我想设置一个模拟来返回我想要测试的 cookie。在 WebAPI 中像这样检索 Cookie:
Request.Headers.GetCookies("CookieName").FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
request 对象是可模拟的,但不幸的是,我无法模拟 headers 属性(它是一个HttpRequestHeaders对象),因为它HttpRequestHeaders是密封的,而且它的方法都不是虚拟的,而且它也没有实现接口(MS 干得好)。
有没有办法模拟 WebAPI 中 cookie 的获取/设置?
ps 我不想听到我不应该在 WebAPI 中使用 cookie,这就是正在做的事情,改变它超出了我目前的工作范围
这就是我最终要做的。
设置请求 cookie。
var target = new YourController()
target.Request.Headers.Add("Cookie", "YourCookieKey=Value;");
Run Code Online (Sandbox Code Playgroud)
读取响应cookie。
var response = target.YourControllerMethod();
var result = response.Content.ReadAsAsync<YourModel>().Result;
Assert.IsTrue(response.Headers.GetValues("Set-Cookie").ToList()[0].Contains("YourCookieKey"));
Run Code Online (Sandbox Code Playgroud)
你可以尝试模拟HttpRequestBase,谷歌搜索并发现这个 -
var request = new Mock<HttpRequestBase>();
request.SetupGet(r => r.Cookies).Returns(new HttpCookieCollection());
request.Object.Cookies.Add(new HttpCookie("TestCookie", "TestValue"));
request.Object.Cookies.Add(new HttpCookie("AnotherCookie"));
Run Code Online (Sandbox Code Playgroud)
ps:使用 Web api 时不应使用 cookie。
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |