gpt4 book ai didi

c# - 模拟属性 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:22 24 4
gpt4 key购买 nike

我在项目中使用自定义属性,我想将它们集成到我的单元测试中。

现在我使用 Rhino Mocks 来创建我的模拟,但我没有看到向它们添加我的属性(和参数)的方法。

我错过了什么,还是不可能的?其他模拟框架?或者我是否必须使用我的属性创建虚拟实现?

示例:我在插件架构 (IPlugin) 中有一个接口(interface),并且有一个属性可以将元信息添加到属性中。然后我在插件实现中寻找具有此属性的属性以进行额外处理(存储其值,标记为只读 gui ...)

现在,当我创建一个 mock 时,我可以轻松地向属性或对象实例本身添加属性吗?

编辑:我发现了一个有相同问题的帖子 -> link .答案不是 100%,而是 Java...

编辑 2:可以完成...搜索更多(在 SO 上)并找到 2 个相关问题(+ 答案)

herehere

现在,这是否已经在一个或另一个模拟框架中实现了?

最佳答案

这是我如何测试自定义属性的示例。在这种情况下,我有一个在方法上使用的自定义属性。在我的测试类中,我创建了一个应用自定义属性的占位符方法。然后我使用反射来获取自定义属性的实例。

[TestFixture] public class SomeRandomAttributeTest
{
[SomeRandom(RestrictionType.Local)]
public void PlaceholderMethodForAttribute() {throw new ApplicationException(this.ToString());}

[Test]public void BlahBlahIsBlahTheBlah()
{
object[] attributes = this.GetType().GetMethod("PlaceholderMethodForAttribute").GetCustomAttributes(false);
Assert.AreEqual(1, attributes.Length);
Assert.IsInstanceOfType(typeof(SomeRandomAttribute), attributes[0]);

Assert.AreEqual("Yada yada yada", ((SomeRandomAttribute) attributes[0]).Yada);

}
}

关于c# - 模拟属性 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319002/

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