Vir*_*odh 13 c# unit-testing moq xunit.net asp.net-core
我使用IConfigurationRoute来访问这样的目录.
if (type == "error") directory = _config.GetValue<string>("Directories:SomeDirectory");
Run Code Online (Sandbox Code Playgroud)
_config是在构造函数中注入的IConfigurationRoot.
我尝试了以下方式来模拟它.
var mockConfigurationRoot = new Mock<IConfigurationRoot>();
mockConfigurationRoot.Setup(c => c.GetValue<string>("Directories: SomeDirectory"))
.Returns("SomeDirectory")
.Verifiable();
var config = mockConfigurationRoot.Object;
Run Code Online (Sandbox Code Playgroud)
问题是在运行测试时,Xunit会抛出异常说法
"System.NotSupportedException:Expression引用一个不属于模拟对象的方法"
我该如何解决这个问题?
小智 21
我是使用SetupGet方法完成的,如下所示.它适用于我,希望它有所帮助.
_configurationRoot = new Mock<IConfigurationRoot>();
_configurationRoot.SetupGet(x => x[It.IsAny<string>()]).Returns("the string you want to return");
Run Code Online (Sandbox Code Playgroud)
将appSettings.json复制到Test项目的根目录,并将其属性标记为Content,如果较新则复制。
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
ConfigurationManager.Configuration = builder.Build();
Run Code Online (Sandbox Code Playgroud)ConfigurationManager是一个类,它具有静态属性Configuration。这样,整个应用程序都可以作为ConfigurationManager.Configuration []进行访问。
| 归档时间: |
|
| 查看次数: |
14945 次 |
| 最近记录: |