Как я могу определить, является ли объект моккитом?
Можно ли указать в коде, если данный объект является Mockito mock или нет?
Причина, по которой я хотел бы сделать это, - это вернуть другое сообщение об ошибке, когда он используется. Это будет использоваться, чтобы предложить другим разработчикам, чтобы они использовали заранее подготовленный макет, который уже настроен отвечать на вызовы полезным способом, а не создавать сам макет.
На данный момент лучшее, что у меня есть, это object.getClass().getName().contains("EnhancerByMockitoWithCGLIB")
, но это кажется взломанным.
Ответы
Ответ 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.