Получить сервис от WebApplicationFactory <T>в интеграционных тестах ASP.NET Core - PullRequest
0 голосов
/ 10 октября 2018

Я хочу настроить свои тесты, используя WebApplicationFactory<T>, как описано в Интеграционные тесты в ASP.NET Core .

Перед некоторыми из моих тестов мне нужно использовать сервис, настроенный вреальный класс запуска, чтобы настроить вещи.У меня проблема в том, что я не вижу способа получить сервис с завода.

Я могу получить сервис из factory.Server, используя factory.Host.Services.GetRequiredService<ITheType>();, за исключением того, что factory.Server равен нулю, пока factory.CreateClient(); был вызван.

Есть ли какой-то способ, которым я не могу получить услугу, используя фабрику?

Спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Вам необходимо создать область действия у поставщика услуг, чтобы получить необходимую услугу:

using (var scope = AppFactory.Server.Host.Services.CreateScope())
{
    var context = scope.ServiceProvider.GetRequiredService<MyDatabaseContext>();
}
...