Populate IConfiguration for unit tests

You can use MemoryConfigurationBuilderExtensions to provide it via a dictionary.

using Microsoft.Extensions.Configuration;

var myConfiguration = new Dictionary<string, string>
{
    {"Key1", "Value1"},
    {"Nested:Key1", "NestedValue1"},
    {"Nested:Key2", "NestedValue2"}
};

var configuration = new ConfigurationBuilder()
    .AddInMemoryCollection(myConfiguration)
    .Build();

The equivalent JSON would be:

{
  "Key1": "Value1",
  "Nested": {
    "Key1": "NestedValue1",
    "Key2": "NestedValue2"
  }
}

The equivalent Environment Variables would be (assuming no prefix / case insensitive):

Key1=Value1
Nested__Key1=NestedValue1
Nested__Key2=NestedValue2

The equivalent Command Line parameters would be:

dotnet myapp.dll \
  -- \
  --Key1=Value1 \
  --Nested:Key1=NestedValue1 \
  --Nested:Key2=NestedValue2

Leave a Comment