Отправить токен сеанса на TestServer - PullRequest
1 голос
/ 09 марта 2019

ПОЛЬЗОВАТЕЛЬСКАЯ СРЕДНЯЯ ПОМОЩЬ

Мое приложение имеет промежуточное ПО, которое получает строку из сеанса:

public Task Invoke(HttpContext httpContext)
{
    //...

    string token = httpContext.Session.GetString("token");

    //...
}

TEST

Есть интеграционный тест

public class UsersControllerTest
{
    private readonly HttpClient _httpClient;
    private readonly TestServer _testServer;

    public UsersControllerTest()
    {
        var projectDir = @"c:\TestSessionApp";
        _testServer = new TestServer(WebHost.CreateDefaultBuilder()
            .UseEnvironment("Development")
                .UseContentRoot(projectDir)
                .UseConfiguration(new ConfigurationBuilder()
                    .SetBasePath(projectDir)
                    .AddJsonFile("appsettings.Development.json")
                    .Build()
                )
            .UseStartup<Startup>());
        _httpClient = _testServer.CreateClient();
    }

    [Theory]
    [InlineData("GET")]
    public async Task TestGet(string methodType)
    {
        var requestMsg = new HttpRequestMessage(new HttpMethod(methodType), "/api/users");
        //... ?

        var responseMsg = await _httpClient.SendAsync(requestMsg);
    }

Как я могу отправить строку сеанса по HttpClient? Должен ли я каким-то образом издеваться над HttpContext? Однако, как вы можете видеть, это интеграция тест, поэтому я хотел бы использовать минимальный макет.

...