DynamicObject:这是一个很好的模拟解决方案吗?

时间:2010-06-24 10:16:10

标签: .net-4.0 mocking

我一直在学习.NET 4.0中的DynamicObject,并想知道这种类型是否适合创建模拟对象。

Mocking似乎是一种使用DynamicObject的好方法,但我错过了什么?

  • 是否有任何模拟框架使用DynamicObject(而不是动态代理或拦截)进行模拟?
  • 使用DyanmicObject进行模拟是否有任何缺点(除了需要.NET 4.0 CLR)?

1 个答案:

答案 0 :(得分:3)

我能想到的最大缺点是你可以在动态类型上调用世界上任何方法/属性。

例如,如果你的api发生了变化,想想更新你的测试会是多么糟糕 - 你的测试仍然会全部编译,但是如果他们试图运行重命名/删除的方法,他们都会因运行时错误而死。

这与在动态对象上操作时丢失所有智能感知这一事实相结合,使我相信基于动态的模拟库将更难以使用像Rhino这样基于代理的东西。