How to mock configuration.GetSection with FakeItEasy syntax?
If you take a look at the return value of IConfiguration.GetSection()
, you'll see that it expects to return an IConfigurationSection
. That's the first issue here.
Beyond that, in order to pull out your List from the config, you would need to do something like
_configuration.GetSection("SettingsConfig").Get<List<SettingsConfig>>();
Unfortunately, the .Get<>
method on an IConfigurationSection
is an extension method, which cannot be faked by FakeItEasy. You will get the following error:
The current proxy generator can not intercept the method Microsoft.Extensions.Configuration.ConfigurationBinder.Get... - Extension methods can not be intercepted since they're static.
You'll need to put another interface in front of the IConfiguration
that wraps the extension method if you need to test it.
Otherwise to fake your configuration file, you could do something like the following:
var fakeConfigSection = A.Fake<IConfigurationSection>();
A.CallTo(() => fakeConfigSection["Name"])
.Returns("MyFakedConfigValue");
var fakeConfig = A.Fake<IConfiguration>();
A.CallTo(() => fakeConfig.GetSection("SettingsConfig"))
.Returns(fakeConfigSection);