例如,我有以下代码:
SomeClass stub = Mockito.mock(SomeClass.class);
之后,stub是SomeClass的正常实现,但有自己的行为(默认只是抛出一些异常,但没关系)
我如何为我的图书馆做同样的事情?我希望能够用一些wrap()方法包装一些类,甚至更好的实例,以混合我的行为。
答案 0 :(得分:4)
jmock和Mockito(使用jmock代码)都在内部使用cglib来创建它们的存根/代理。请参阅ClassImposterizer
。
对于简单的情况,您可以使用Java的Proxy
机制来创建您想要存根或模拟的接口的动态代理(实际上只是调用处理程序)。
答案 1 :(得分:0)
这是proxy
设计模式。代理实现了模拟的接口/扩展模拟类,因此可以将其转换为模拟类型。如果需要,它还可以将责任委托给“实际实施”。通常,这种代理存根是通过一点点反射创建的。