gpt4 book ai didi

c# - 使用 JustMock 模拟 ConfigurationManager.AppSettings

转载 作者:行者123 更新时间:2023-11-30 16:26:49 26 4
gpt4 key购买 nike

按照以下网址的指示:http://www.telerik.com/help/justmock/advanced-usage-static-mocking.html

我没有成功模拟 ConfigurationManager.AppSettings。这是我正在使用的代码...

[TestMethod]
public void my_test()
{
// Arrange
var appSettings = new NameValueCollection {
{ "test1", "one" }
};

Mock.Arrange(() => ConfigurationManager.AppSettings)
.Returns(appSettings)
.MustBeCalled();

// Act
var test1 = ConfigurationManager.AppSettings["test1"];

// Assert
Assert.AreEqual("one", test1);
}

这是我收到的错误。

Assert.AreEqual 失败。预期的:。实际:<(空)>。

是否可以模拟这个对象?

[edit] 我也在使用试用版。

最佳答案

我刚刚尝试了您的测试,它按预期工作:

// Arrange 
var appSettings = new NameValueCollection { { "test1", "one" } };

Mock.Arrange(() => ConfigurationManager.AppSettings)
.Returns(appSettings)
.MustBeCalled();

// Act
var test1 = ConfigurationManager.AppSettings["test1"];

// Assert
Assert.AreEqual("one", test1);

请确保 Configuration.AppSettings 尚未在项目的某些静态构造函数中调用。

这里要注意 .net 探查器在 OnJITCompilationStarted 期间进行拦截,并且它只针对给定成员触发一次。

此外,请确保您的探查器配置正确,并安装了 VS 的 JM 插件。您可以通过 Mock.IsProfilerEnabled 检查分析器是否已启用。

最后,您通常不需要使用 Mock.SetupStatic(#TARGET_TYPE#),除非您正在执行严格的模拟或想要为给定类型伪造静态构造函数。当您执行 Mock.Arrange 时,它会自动设置拦截器(如果尚未设置的话)。

[注:我用的是最新版]

关于c# - 使用 JustMock 模拟 ConfigurationManager.AppSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8483899/

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