繁体   English   中英

使用cookie进行ASP.NET Core .NET Framework测试

[英]ASP.NET Core .NET Framework testing with cookie

我创建了一个会话中间件,想要测试它。 所以我使用TestServer进行测试。

测试代码如下:

using System.Linq;
using System.Threading.Tasks;
using ComponentsTest.StartUps;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using NUnit.Framework;

namespace ComponentsTest.IntegrationTest
{
  [TestFixture]
  public class SessionMwTest
  {
    [SetUp]
    public void Setup()
    {
      _server = new TestServer(_hostBuilder);
    }

    private readonly IWebHostBuilder _hostBuilder = new WebHostBuilder().UseStartup<StartUpSession>();
    private TestServer _server;

    [Test]
    public async Task BrowserRequestForCookies_SeveralRequest_ExpectToken()
    {
      var client = _server.CreateClient();
      var req1 = await client.GetAsync("/");

      var sid = (from r in req1.Headers
        where r.Key == "Set-Cookie"
        from h in r.Value
        where h.Contains("sid")
        select h).FirstOrDefault();
      StringAssert.Contains("sid", sid);

    }

  }
}

我想用cookie提出请求,我已经知道但是不知道如何将cookie放到请求中。
我怎样才能做到这一点?

从根本上说,Cookie只是一个标题。 您可以将Set-Cookie的sid值存储在字符串中,然后为每个请求添加标头:

request.Headers.Add("Cookie", new CookieHeaderValue(cookie.Name, cookie.Value).ToString());

httprequest容器可能会有所帮助https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer(v=vs.110).aspx

WebRequest _webReq = WebRequest.Create( uri );
HttpWebRequest _httpReq = _webReq as HttpWebRequest; 
_httpReq.CookieContainer.Add(cookie); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM