【发布时间】:2022-01-23 04:04:25
【问题描述】:
我有以下 appsettings.json 配置。
"SettingsConfig": [
{
"Name": "Something",
"Node": "Something",
"SettingName": "Something"
},
{
"Name": "Something",
"Node": "Something",
"SettingName": "Something"
}]
我想写 UnitTest ,但是下面的语法不行。
_configuration = A.Fake<IConfiguration>();
A.CallTo(() => _configuration.GetSection("SettingsConfig")).Returns(new List<SettingsConfig>());
错误消息:IConfigurationSection 不包含 Returns 的定义。
如何使用 FakeItEasy 语法模拟 IConfiguration 以便为 UnitTesting 应用模拟数据?
【问题讨论】:
-
您确定在
.Returns之前没有缺少右括号)吗?如果您的代码类似于:A.CallTo(() => _configuration.GetSection("SettingsConfig").Returns(new List<SettingsConfig>());,我预计会出现该错误 -
不,括号没问题。您可以复制粘贴代码并查看它们是否正确。
-
这是确切的错误信息吗?我收到一条不同的消息:
'IReturnValueArgumentValidationConfiguration<IConfigurationSection>' does not contain a definition for 'Returns' and the best extension method overload 'ReturnValueConfigurationExtensions.Returns<List<UserQuery.SettingsConfig>>(IReturnValueConfiguration<Task<List<UserQuery.SettingsConfig>>>, List<UserQuery.SettingsConfig>)' requires a receiver of type 'IReturnValueConfiguration<Task<List<UserQuery.SettingsConfig>>>' -
我认为问题在于
GetSection返回IConfigurationSection,而不是List<SettingsConfig>。所以你不能配置返回List<SettingsConfig>的方法,它必须返回一个IConfigurationSection。 -
但我需要 List
() 之后执行业务逻辑,否则它将保持为空
标签: c# .net fakeiteasy