【问题标题】:How to mock everything?如何嘲笑一切?
【发布时间】:2011-04-10 11:40:16
【问题描述】:

我了解如何模拟接口或虚拟方法调用。但是像 TypeMock 这样的框架可以模拟框架中的所有内容。哪些 .NET 机制用于提供此类功能?

【问题讨论】:

    标签: c# .net mocking typemock


    【解决方案1】:

    例如,Typemock Isolator 使用 CLR profiler API 拦截 .NET 调用并在运行时更改它们:

    Quote:

    Typemock 隔离器使用 面向方面的程序设计 这创建了一个模拟方面。 在内部,它使用 .NET Framework profiler API 来监控 应用程序的执行。当一个方法 由 CLR 加载,Typemock 隔离器检索 IL 并替换 它带有检测的 IL 代码。类型模拟 隔离器不会改变你原来的 IL代码,它只是插入新代码 调用 Typemock 隔离器 框架并返回模拟值。

    【讨论】:

    • 感谢您的回复。你能推荐一篇关于这个 API 的好文章吗?
    • This article 是一个好的开始。
    【解决方案2】:

    Mock Everything 是 Mock 框架的功能之一。 Mock Everything 简而言之就是模拟一个类中的所有东西,比如

    • 模拟依赖对象
    • 非虚拟方法
    • 密封类
    • 静态方法
    • 静态类
    • 非公共成员
    • 非公共类型

    JustMockTypeMock 都提供此功能。

    你其实可以看看一些开源mock框架的源代码,比如Moq框架、Easy Mock、Rhino Mocks等。

    披露:请注意,提供的链接是我自己的网站

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2016-10-02
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      相关资源
      最近更新 更多