Как я могу определить, является ли объект моккитом? - программирование
Подтвердить что ты не робот

Как я могу определить, является ли объект моккитом?

Можно ли указать в коде, если данный объект является Mockito mock или нет?

Причина, по которой я хотел бы сделать это, - это вернуть другое сообщение об ошибке, когда он используется. Это будет использоваться, чтобы предложить другим разработчикам, чтобы они использовали заранее подготовленный макет, который уже настроен отвечать на вызовы полезным способом, а не создавать сам макет.

На данный момент лучшее, что у меня есть, это object.getClass().getName().contains("EnhancerByMockitoWithCGLIB"), но это кажется взломанным.

4b9b3361

Ответ 1

Похоже, что такого API нет (пожалуйста, поднимите вопрос, это должно быть!) К счастью (после вашего комментария ниже) в пакете org.mockito.internal.util есть метод:

import org.mockito.internal.util.MockUtil;

new MockUtil().isMock(obj)

В будущем метод Mockito.isMock() может быть добавлен в общедоступный API, см. Проблема 313: Предоставьте isMock за пределами org.mockito.internal).

Ответ 2

В качестве продолжения, открытый API Mockito теперь имеет этот метод:

MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)

Это результат проблемы, которую @David Wallace поднял. Возвращаемый объект поддерживает методы 'isMock()', а также 'isSpy()', и позже может быть улучшен, чтобы предоставить дополнительную информацию, связанную с mock.