问题描述
我在 config.json 文件中有一个如下列表`
I have a list like following in config.json file `
{
"foo": {
"bar": [
"1",
"2",
"3"
]
}
}`
我可以使用
Configuration.GetSection("foo:bar").Get<List<string>>()
我想模拟 configuration.GetSection 来编写单元测试.
I want to mock the configuration.GetSection to write unit test.
以下语法失败
mockConfigRepo
.SetupGet(x => x.GetSection("reportLanguageSettings:reportLanguageList").Get<List<string>>())
.Returns(reportLanguages);
推荐答案
我遇到了同样的问题,发现我需要为数组中的每个元素以及数组节点本身创建一个mock IConfigurationSection,然后设置父节点返回子节点,子节点返回它们的值.在 OP 示例中,它看起来像这样:
I've encountered same issue and found that I needed to create a mock IConfigurationSection for every element in the array, as well as the array node itself, and then setup the parent node to return children, and children to return their values. In OP example, it would look like this:
var oneSectionMock = new Mock<IConfigurationSection>();
oneSectionMock.Setup(s => s.Value).Returns("1");
var twoSectionMock = new Mock<IConfigurationSection>();
twoSectionMock.Setup(s => s.Value).Returns("2");
var fooBarSectionMock = new Mock<IConfigurationSection>();
fooBarSectionMock.Setup(s => s.GetChildren()).Returns(new List<IConfigurationSection> { oneSectionMock.Object, twoSectionMock.Object });
_configurationMock.Setup(c => c.GetSection("foo:bar")).Returns(fooBarSectionMock.Object);
附:我使用的是 Moq,所以请翻译成您选择的模拟库.
P.S. I'm using Moq, so please translate to your mock library of choice.
附言如果您对为什么最终会起作用、不可修改的 Get() 方法的作用或有比 OP 更复杂的场景感兴趣,阅读此类可能会有所帮助:https://github.com/aspnet/Extensions/blob/release/2.1/src/Configuration/Config.Binder/src/ConfigurationBinder.cs
P.P.S. If you are interested in why this ends up working, what unmockable Get() method does, or have a more complex scenario than OP, reading this class may be helpful: https://github.com/aspnet/Extensions/blob/release/2.1/src/Configuration/Config.Binder/src/ConfigurationBinder.cs
这篇关于C# 如何模拟 Configuration.GetSection("foo:bar").Get<List<string>>()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)