gpt4 book ai didi

c# - 最小起订量配置部分

转载 作者:行者123 更新时间:2023-11-30 15:46:22 25 4
gpt4 key购买 nike

我的应用程序有以下代码:

public interface IConfigurationManager {
CustomSection Settings { get; }
}

public class ConfigurationManager : IConfigurationManager {
public CustomSection Settings { get { return (CustomSection)WebConfigurationManager.GetSection("customSettings"); } }
}

public class CustomSection : ConfigurationSection {
[ConfigurationProperty("transactions", IsRequired = true)]
public TransactionsElement Transactions {
get { return (TransactionsElement)base["transactions"]; }
}
}

public class TransactionsElement : ConfigurationElement {
[ConfigurationProperty("testStatus", DefaultValue = true)]
public bool TestStatus {
get { return (bool)base["testStatus"]; }
set { base["testStatus"] = value; }
}
}

现在在我的 Global.asax.cs 文件中定义了以下静态变量:

public static CustomSection Settings = ServiceLocator.Current.GetInstance<IConfigurationManager>().Settings;

在我的应用程序中注入(inject) ConfigurationManager 的位置。到目前为止,一切都很好。现在我想说的是,如果他们尝试在我的单元测试中访问 Global.Settings.Transactions.TestStatus,它会返回 true。这是我感到困惑的地方,我最初的尝试刚刚被放在一起。到目前为止我有(编辑):

var cm = new Mock<IConfigurationManager>();
var cs = new Mock<CustomSection>();
var te = new Mock<TransactionsElement>();

cm.SetupGet(m => m.Settings).Returns(cs.Object);
cs.SetupGet(s => s.Transactions).Returns(te.Object);
te.SetupGet(e => e.TestStatus).Returns(true);

但是当我尝试访问 Global.Settings.Transactions.TestStatus 时,它会抛出一个空错误。我只是潜入 mock ,非常感谢您的帮助。谢谢

最佳答案

因为您要返回一个新对象,而不是模拟对象。您不能“设置”非代理对象。

configurationManager.Setup(c => c.Settings).Returns(new CustomSection());

new CustomSection 需要是模拟对象,以便您在属性上设置 Get。所以你需要模拟 CustomSectionTransactionElement

关于c# - 最小起订量配置部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com