【发布时间】:2017-09-22 22:35:06
【问题描述】:
我使用 IConfigurationRoute 来访问这样的目录。
if (type == "error") directory = _config.GetValue<string>("Directories:SomeDirectory");
_config 是在构造函数中注入的 IConfigurationRoot。
我尝试了以下方式来模拟它。
var mockConfigurationRoot = new Mock<IConfigurationRoot>();
mockConfigurationRoot.Setup(c => c.GetValue<string>("Directories: SomeDirectory"))
.Returns("SomeDirectory")
.Verifiable();
var config = mockConfigurationRoot.Object;
问题是在运行测试时 Xunit 抛出异常说
"System.NotSupportedException : 表达式引用了一个方法 不属于模拟对象”
我该如何解决这个问题?
【问题讨论】:
-
您正在尝试模拟扩展方法,这是 Moq 无法做到的。
-
感谢 cmets。但是周围的方法是什么,我的意思是这个行业的人是怎么做的?我无法在 .net 核心中使用 Fakes。我找不到解决方案,我是 .net 新手。
标签: c# unit-testing asp.net-core moq xunit.net