Created
October 16, 2023 12:29
-
-
Save MichalGrzegorzak/66d60127d1e6d5e73b177ca1d27facbb to your computer and use it in GitHub Desktop.
Read configuration from UnitTest .netCore
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[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