Доступ в память dbcontext в интеграционном тесте - PullRequest
1 голос
/ 08 марта 2019

Как я могу получить доступ к dbcontext из базы данных в памяти внутри интеграционного теста?

Я следовал за кодом здесь: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.2#customize-webapplicationfactory

и выполнить тест, аналогичный:

public class IndexPageTests : 
    IClassFixture<CustomWebApplicationFactory<RazorPagesProject.Startup>>
{
    private readonly HttpClient _client;
    private readonly CustomWebApplicationFactory<RazorPagesProject.Startup> 
        _factory;

    public IndexPageTests(
        CustomWebApplicationFactory<RazorPagesProject.Startup> factory)
    {
        _factory = factory;
        _client = factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });
    }

В этом IndexPageTests можно получить доступ к dbcontext в памяти?

Я пытался

 using (var context = new ApplicationDbContext(???))

Мне нужен доступ к данным из таблиц, которые я ранее посеял из CustomWebApplicationFactory

но не уверен, что поставить для вариантов

1 Ответ

2 голосов
/ 08 марта 2019

Благодаря Никоси, мне удалось получить dbcontext

.
var scopeFactory = _factory.Server.Host.Services.GetService<IServiceScopeFactory>();
using (var scope = scopeFactory.CreateScope())
{
   var context = scope.ServiceProvider.GetService<ApplicationDbContext>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...