小编Hop*_*son的帖子

如何模拟 iconfiguration.GetSection(MyNodeName).Get<MyClassObject>()

我在 appsettings.json 文件中有一个节点,如下所示

"MyClassName": {
    "MyList1": ["x","y"],
    "MyList2": ["a","b","c"]
}
Run Code Online (Sandbox Code Playgroud)

为了保存和使用这些列表,我在后端有一个具有 2 个属性的类

public class MyClass
 {
    public List<string> MyList1 { get; set; }
    public List<string> MyList2 { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

有一种方法可以IConfiguration像这样使用填充这些属性

_iconfiguration.GetSection("MyClassName").Get<MyClass>();
Run Code Online (Sandbox Code Playgroud)

我需要在 .NET Core 应用程序中模拟上面的代码行。为了进行模拟,我使用 Moq(4.16.1) 我尝试像这样模拟它

_mockConfiguration
    .Setup(m => m.GetSection(It.IsAny<string>()).Get<Myclass>())
    .Returns(MyClassObject);
Run Code Online (Sandbox Code Playgroud)

但我显然错过了一些东西,因为我收到了不支持的表达式错误。错误说的是这样的

扩展方法(此处:ConfigurationBinder.Get)不得在设置/验证表达式中使用。

有办法实现这一点吗?

c# moq mocking appsettings .net-core

2
推荐指数
1
解决办法
2604
查看次数

标签 统计

.net-core ×1

appsettings ×1

c# ×1

mocking ×1

moq ×1