开发者

How does jmock and mockito create wrappers?

开发者 https://www.devze.com 2023-03-29 12:27 出处:网络
For example, I have the following code: SomeClass stub = Mockito.mock(SomeClass.class); After that, stub is a normal implementation o开发者_如何学Pythonf SomeClass, but with its own behavior (defau

For example, I have the following code:

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

After that, stub is a normal implementation o开发者_如何学Pythonf SomeClass, but with its own behavior (default is to just throw some exception, but that's ok)

How can I do the same thing for my library? I would like to be able to wrap some classes, or even better instances with some wrap() method, to mix-in my behavior there.


Both jmock and Mockito (which uses jmock code) use cglib internally to create their stubs/proxies. See ClassImposterizer.

For simple cases, you can use Java's Proxy mechanism to create dynamic proxies (really just invocation handlers) of interfaces you want to stub or mock.


It's a proxy design pattern. Proxy implements mocked interface / extends mocked class, so it can be casted to the mocked type. It can also delegate responsibility to the 'real implementation' if required. Usually, such proxy stub is created with a little mix of reflection.

0

精彩评论

暂无评论...
验证码 换一张
取 消