Skip to content

Instantly share code, notes, and snippets.

@MichalGrzegorzak
Created October 16, 2023 12:29
Show Gist options
  • Save MichalGrzegorzak/66d60127d1e6d5e73b177ca1d27facbb to your computer and use it in GitHub Desktop.
Save MichalGrzegorzak/66d60127d1e6d5e73b177ca1d27facbb to your computer and use it in GitHub Desktop.
Read configuration from UnitTest .netCore
[TestClass]
public class BaseTestWithConfiguration
{
/// <summary>
/// Reads values from local.settings of the main project
/// </summary>
static void ConfigureEnvironmentVariablesFromLocalSettings()
{
var path = Path.GetDirectoryName(typeof(Startup).Assembly.Location);
var json = File.ReadAllText(Path.Join(path, "local.settings.json"));
var parsed = Newtonsoft.Json.Linq.JObject.Parse(json).Value<Newtonsoft.Json.Linq.JObject>("Values");
foreach (var item in parsed)
{
Environment.SetEnvironmentVariable(item.Key, item.Value.ToString());
}
}
public ILogHelper GetLogger() => new LogHelper(NullLogger.Instance, null);
public IConfigurationRoot BuildConfiguration()
{
ConfigureEnvironmentVariablesFromLocalSettings();
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables();
var config = configurationBuilder.Build();
return config;
}
public T BindConfigSection<T>(IConfigurationRoot config, string name) where T : class
{
var instance = Activator.CreateInstance<T>();
var section = config.GetSection(name);
section.Bind(instance);
return instance;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment