У меня есть проект .NET Core Web API, в котором уже есть файл appsettings.json, но я хочу добавить то же самое в свой соответствующий проект xUnit.
Я добавил файл appsettings.json вкорень проекта
И содержимое appsettings.json
{
"DatabaseType" : "MySql",
"ConnectionStrings" : {
"CycleTrackingDb": "connection_string_here"
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что я звоню ConfigurationManager.ConnectionStrings["CycleTrackingDB"]
и ConfigurationManager.AppSettings["DatabaseType"]
возвращается как NULL или пустая строка.
Я настроил xUnit, используя раздел «Классовые приспособления» руководства xUnit https://xunit.github.io/docs/shared-context.html
В моем DatabaseFixture это
public class DatabaseFixture : IDisposable
{
public Context Context { get; private set; }
public DatabaseFixture()
{
Context = new Context(DatabaseOptionsFactory.DbContextOptions);
}
public void Dispose()
{
}
}
Все мои тестовые классы будут наследоваться от этого:
[Collection("Database collection")]
public class CycleTargetTrackerTest
{
protected Context Context { get; }
public CycleTargetTrackerTest()
{
Context = new DatabaseFixture().Context;
}
}
DatabaseOptionsFactory - это просто статический класс, который должен читаться в настройках файла appsettings.json, с первыми двумя строками.следующий статический конструктор, который будет использовать выходные данные для установки контекста
var databaseType = (DatabaseType)Enum.Parse(typeof(DatabaseType), Config.Configuration.Settings["DatabaseType"]);
var connectionString = ConfigurationManager.ConnectionStrings["CycleTrackingDB"];
Оба возвращают пустой.
EDIT Мне удалось его получитьчитать в файле appsettings.json.Я следовал этому руководству здесь: Чтение значений json appsettings в .NET Core Project Project , но теперь я хотел бы загрузить настройки так же, как System.Configuration.ConfigurationManager
.Есть ли способ сделать это?