2016-07-22 71 views
3

我创建会话中间件并想测试它。所以我使用TestServer进行测试。ASP.NET Core .NET Framework使用Cookie进行测试

测试代码看起来如下:

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的请求。
我该怎么做?

回答

5

在最基本的,一个Cookie是一个简单的标题。你可以的Set-Cookie的SID值存储在一个字符串,然后为每个请求添加标题:

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

非常感谢@nemec。 –