Получить значение строки подключения из Microsoft.AspNetCore.TestHost.TestServer - PullRequest
0 голосов
/ 25 июня 2018

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

public class EmplyeesScenarios
{
    private readonly TestServer _testServer;
    private readonly AppDbContext _testService;

    public EmplyeesScenarios()
    {
        _testServer = TestServerFactory.CreateServer<TestsStartup>();
        var dbOption = new DbContextOptionsBuilder<AppDbContext>()
                       .UseSqlServer("//here i need to put the same connection string of _testServer")
                       .Options;
        _testService = new AppDbContext(dbOption);

    }
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Предполагая, что ваш тестовый сервер настроен правильно, вам просто нужно разрешить контекст базы данных непосредственно из экземпляра сервера.Например:

_testServer = TestServerFactory.CreateServer<TestsStartup>();

// create service scope and retrieve database context
using (var scope = _testServer.Host.Services.CreateScope())
{
    var db = scope.ServiceProvider.GetService<AppDbContext>();

    // ensure that the db is created for example
    await db.Database.EnsureCreatedAsync();

    // add test fixtures or whatever
}

Технически вы также можете разрешить конфигурацию с тестового хоста и прочитать из него строку подключения, но поскольку вы выполняете интеграционный тест , вам следуетфактически проверьте полную интеграцию и не отклоняйтесь от существующей настройки, создавая контекст вашей базы данных вручную.

0 голосов
/ 25 июня 2018

Вы можете использовать набор сервисов на своем тестовом хосте. Например:

var config = _testServer.Host.Services.GetRequiredService<IConfigurationRoot>();
var connectionString = config.GetConnectionString("Foo");

Однако вы должны использовать это для всех ваших услуг, поэтому вместо того, чтобы пытаться вообще обновить свой контекст, просто сделайте:

var context = _testServer.Host.Services.GetRequiredService<AppDbContext>();

Строка подключения не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...