繁体   English   中英

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

[英]Can I use FakeItEasy to fake Properties.Settings.Default properties?

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

非虚拟方法不能被拦截。

… 作为回报。

有任何想法吗?

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

此外,如文档的“可伪造的内容”页面所示, SomeProperty将需要是虚拟的或以其他方式覆盖。

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

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

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

尽管如注释中所指出,但这仅是在属性具有setter的情况下的一种选择,似乎Application属性没有,而User属性却有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM