Согласование аутентификации и Microsoft.AspNetCore. Mvc .Testing - PullRequest
2 голосов
/ 07 февраля 2020

docs.microsoft.com рекомендует использовать Microsoft.AspNetCore. Mvc .Testing для интеграционных тестов, и это, кажется, отличный выбор, но кажется, что они пропустили чтобы добавить возможность тестирования с NegotiateDefaults.AuthenticationScheme .

Добавление к Startup.cs / ConfigureServices

 services.AddAuthentication (NegotiateDefaults.AuthenticationScheme).AddNegotiate ();

приводит к сбою тестов с

Сообщение: System.NotSupportedException: проверка подлинности при согласовании требует наличия сервера, поддерживающего IConnectionItemsFeature, такого как Kestrel.

Кто-нибудь знает, как использовать Microsoft.AspNetCore. Mvc .Testing с конечными точками, которые используют NegotiateDefaults.AuthenticationScheme? Это просто не поддерживается, как и заявления об исключениях?

1 Ответ

0 голосов
/ 07 февраля 2020

Я удалил Microsoft.AspNetCore. Mvc .Testing и использовал вместо этого пользовательский базовый класс NUnit:

public class AspNetCoreIntegrationTestBase {
public CancellationTokenSource CancellationTokenSource {
    get;
    private set;
}
public Task TestWebserver {
    get;
    private set;
}

[OneTimeSetUp]
public void Setup() {
    CancellationTokenSource = new CancellationTokenSource();
    TestWebserver = Program.CreateHostBuilder(new string[0]).Build().StartAsync(CancellationTokenSource.Token);
}

[OneTimeTearDown]
public void CleanUp() {
    CancellationTokenSource.Cancel();
    TestWebserver.Dispose();
}

}

Используемый httpclient должен быть инициализирован с

UseDefaultCredentials = true
...