Как jmock и mockito создают оболочки? - PullRequest
2 голосов
/ 18 августа 2011

Например, у меня есть следующий код:

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

После этого заглушка является обычной реализацией SomeClass, но со своим собственным поведением (по умолчанию просто выдается какое-то исключение, но это нормально)

Как я могу сделать то же самое для моей библиотеки? Я хотел бы иметь возможность обернуть некоторые классы или, что еще лучше, экземплярами с помощью некоторого метода wrap (), чтобы смешать свое поведение там.

Ответы [ 2 ]

4 голосов
/ 18 августа 2011

И jmock, и Mockito (который использует код jmock) используют cglib для создания своих заглушек / прокси.См. ClassImposterizer.

. Для простых случаев вы можете использовать механизм Java Proxy для создания динамических прокси (на самом деле просто обработчиков вызовов) интерфейсов, которые вы хотите использовать.заглушка или издеваться.

0 голосов
/ 18 августа 2011

Это proxy шаблон проектирования.Прокси реализует смоделированный интерфейс / расширяет смоделированный класс, так что он может быть приведен к смоделированному типу.Он также может делегировать ответственность «реальной реализации», если требуется.Обычно такая заглушка для прокси создается с небольшим количеством отражений.

...