gpt4 book ai didi

c# - 我可以使用 FakeItEasy 伪造 Properties.Settings.Default 属性吗?

转载 作者:行者123 更新时间:2023-11-28 21:30:17 25 4
gpt4 key购买 nike

我正在尝试做类似于 A.CallTo(() => MyProject.Properties.Settings.Default.SomeProperty).Returns("Hello, World! ;-)"); ,但我确实得到了……

Non virtual methods can not be intercepted.

……作为返回。

有什么想法吗?

最佳答案

FakeItEasy 不能用于覆盖 SomeProperty。问题是 Default 是类型 Settings 的成员,它是一个 sealed 类。为了能够将 A.CallToDefault.SomeProperty 一起使用,Default 必须是使用 A.Fake<…> 创建的假对象.

此外,SomeProperty 需要是虚拟的或以其他方式覆盖,如文档的 What can be faked 所示。页面。

如果您需要能够在您的测试中提供伪配置,您可以围绕配置引入一个抽象层并伪造它,您的生产代码使用委托(delegate)给 MyProject.Properties.Settings 的具体类...

另一种方法(我认为更好)是完全避免伪造/模拟,直接更改设置,也许可以这样做:

MyProject.Properties.Settings.Default.SomeProperty= "Hello, World! ;-)"

虽然正如评论中所指出的,这只是一个选项,如果属性有一个 setter ,应用程序属性似乎没有,但用户属性有。

关于c# - 我可以使用 FakeItEasy 伪造 Properties.Settings.Default 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870330/

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