【问题标题】:How does jmock and mockito create wrappers?jmock 和 mockito 如何创建包装器?
【发布时间】:2011-08-24 17:51:02
【问题描述】:

例如,我有以下代码:

SomeClass stub = Mockito.mock(SomeClass.class);

之后,stub 是 SomeClass 的正常实现,但有自己的行为(默认是抛出一些异常,但没关系)

我怎样才能为我的图书馆做同样的事情?我希望能够用一些 wrap() 方法包装一些类,甚至更好的实例,以混合我的行为。

【问题讨论】:

    标签: java aop mockito jmock


    【解决方案1】:

    jmock 和 Mockito(使用 jmock 代码)在内部都使用 cglib 来创建它们的存根/代理。见ClassImposterizer

    对于简单的情况,您可以使用 Java 的 Proxy 机制来创建要存根或模拟的接口的动态代理(实际上只是调用处理程序)。

    【讨论】:

      【解决方案2】:

      这是一个proxy 设计模式。代理实现了模拟接口/扩展了模拟类,因此可以将其转换为模拟类型。如果需要,它还可以将责任委托给“实际实施”。通常,此类代理存根是通过少量反射创建的。

      【讨论】:

      • 不是一个实际的答案——问题是使用什么——比如在什么框架/库等中,而不是它作为一个概念是如何工作的或它是什么设计模式
      • 问题是“我怎样才能为我的图书馆做同样的事情?”不是“我需要使用什么特定的课程”。我的回答是——使用代理——它们的创建方式并不重要。它可以通过多种方式完成......
      猜你喜欢
      • 2014-08-14
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2020-02-22
      • 2011-10-25
      相关资源
      最近更新 更多