2011-08-18 18 views
2

例如,我有以下代码:jmock和mockito如何创建包装?

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

之后,短线是正常执行SomeClass的,但有自己的行为(默认是刚刚抛出一些例外,但没关系)

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

回答

4

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

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

+0

是的,cglib是我需要的,谢谢。 –

0

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

+0

不是一个实际的答案 - 问题是使用什么 - 在什么框架/库等,而不是如何作为一个概念或它是什么样的设计模式 – Stef

+0

问题是“我怎么能为我的图书馆做同样的事情?”而不是“我需要使用什么特定课程”。我的答案是 - 使用代理 - 它们是如何创建的并不重要。它可以用几十种方法完成... –