Использование HttpClientHandler.AutomaticDecompression с WebApplicationFactory.CreateClient () - PullRequest
0 голосов
/ 28 ноября 2018

Как установить AutomaticDecompression с использованием WebApplicationFactory?

Пример API возвращает JSON с Content-Encoding: gzip.

public class BasicTests : IClassFixture<WebApplicationFactory<Startup>>
{
    private readonly WebApplicationFactory<Startup> _factory;

    public BasicTests(WebApplicationFactory<Startup> factory)
    {
        _factory = factory;
    }

    [Fact]
    public async Task Get_CurrectIdValue()
    {
        // Arrange
        // Needs to set AutomaticDecompression = DecompressionMethods.GZip
        var client = _factory.CreateClient();

        // Act
        // Returns with Content-Encoding: gzip
        var actual = await client.GetJsonAsync<FooModel>("api/foo");

        // Assert
        Assert.Equal("1", actual.Id);
    }
}

Интеграционные тесты в ASP.NET Core |Документы Microsoft

1 Ответ

0 голосов
/ 30 ноября 2018

Лучший способ сделать это - создать свой собственный DelegatingHandler и использовать внутри него SocketsHttpHandler с нужными настройками.Так это выглядит так:

class MyHandler : DelegatingHandler
{
    public MyHandler()
    {
        InnerHandler = new SocketsHttpHandler()
        {
            AutomaticDecompression = System.Net.DecompressionMethods.GZip
        };
    }
}

var client = _factory.CreateDefaultClient(new MyHandler());

Я думаю, что это немного некрасиво, но должно работать.

...