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

7
我将创建一个会话中间件并进行测试。因此,我将使用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放入请求中。
我该怎么做?

2个回答

11
在最基本的层面上,Cookie只不过是一个头部信息。你可以将Set-Cookie中的sid值存储在一个字符串中,然后对于每个请求添加这个头部信息。
request.Headers.Add("Cookie", new CookieHeaderValue(cookie.Name, cookie.Value).ToString());

0

TestServer的实例包含一个请求,在该对象中,我必须放置cookie。您上面展示的代码不基于ASP.NET Core .NET Framework。 - softshipper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接