c# - 如何设置 IConfigurationRoot 的 Mock 以返回值

标签 c# unit-testing asp.net-core moq xunit.net

<分区>

我已经使用 IConfigurationRoute 来访问这样的目录。

if (type == "error") directory = _config.GetValue<string>("Directories:SomeDirectory");

_config是在构造函数中注入(inject)的IConfigurationRoot。

我尝试了下面的方法来模拟它。

        var mockConfigurationRoot = new Mock<IConfigurationRoot>();
        mockConfigurationRoot.Setup(c => c.GetValue<string>("Directories: SomeDirectory"))
            .Returns("SomeDirectory")
            .Verifiable();
        var config = mockConfigurationRoot.Object;

问题是在运行测试时 Xunit 抛出异常

"System.NotSupportedException : Expression references a method that does not belong to the mocked object"

我该如何解决这个问题?

最佳答案

我是使用 SetupGet 方法完成的,如下所示。它对我有用,希望对您有所帮助。

_configurationRoot = new Mock<IConfigurationRoot>();
_configurationRoot.SetupGet(x => x[It.IsAny<string>()]).Returns("the string you want to return");

关于c# - 如何设置 IConfigurationRoot 的 Mock 以返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43618686/

相关文章:

c# - 在 ASP.NET MVC 3 中初始化一个空白的 dbSet

c# - 使用内存中的 sql lite 单元测试流利的 nhibernate 存储库 - 没有这样的表错误

c# - WinForms 单元测试

javascript module 如何获取当前对象( this 引用其他东西)?

c# - System.NotSupportedException 目前不支持方法 'System.Linq.Queryable.GroupBy' 的这种重载。

c# - 如何引用解构的值元组而不复制它

c# - C#读写文件的不同方式

visual-studio - 如何将 TypeScript 定义添加到 .NET Core Nuget 包

asp.net-core - 如何导航到 Blazor Server 应用程序中文件夹的默认页面 (.razor)?

c# - 如何在滚动的 WPF TabControl 中更改 TabItems 的外观?