我一直在学习.NET 4.0中的DynamicObject
,并想知道这种类型是否适合创建模拟对象。
Mocking似乎是一种使用DynamicObject
的好方法,但我错过了什么?
DynamicObject
(而不是动态代理或拦截)进行模拟?DyanmicObject
进行模拟是否有任何缺点(除了需要.NET 4.0 CLR)?答案 0 :(得分:3)
我能想到的最大缺点是你可以在动态类型上调用世界上任何方法/属性。
例如,如果你的api发生了变化,想想更新你的测试会是多么糟糕 - 你的测试仍然会全部编译,但是如果他们试图运行重命名/删除的方法,他们都会因运行时错误而死。这与在动态对象上操作时丢失所有智能感知这一事实相结合,使我相信基于动态的模拟库将更难以使用像Rhino这样基于代理的东西。