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

.net 4.0 DynamicObject:这是一个很好的模拟解决方案吗?,.net-4.0,mocking,.net 4.0,Mocking,我一直在学习.NET4.0中的DynamicObject,想知道这种类型是否适合创建模拟对象 模仿似乎是使用DynamicObject的一种很好的方式,但我是否遗漏了什么 是否有使用DynamicObject(与动态代理或拦截相反)进行模拟的模拟框架 使用DyanmicObject进行模拟是否有任何缺点(除了需要.NET 4.0 CLR) 我能想到的最大缺点是,您可以在动态类型上调用世界上任何方法/属性 例如,想象一下,如果api发生了变化,那么更新您的测试将是一件非常糟糕的事情——您的测试仍

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

模仿似乎是使用
DynamicObject
的一种很好的方式,但我是否遗漏了什么

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

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

      例如,想象一下,如果api发生了变化,那么更新您的测试将是一件非常糟糕的事情——您的测试仍然会编译,但是如果它们尝试使用重命名/删除的方法,它们都会因运行时错误而死亡


      这一点,再加上在对动态对象进行操作时失去所有智能感知的事实,使我相信,使用基于动态的模拟库比使用基于代理的库(如Rhino)更加困难。

      这一点很好。我没有想到这一点:-)很久以前我从NMock切换到Rhino Mock的最大原因之一是它支持编译时类型检查。