Как я могу сказать, является ли объект Mockito mock?


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

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

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

2 52

2 ответа:

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

import org.mockito.internal.util.MockUtil;

new MockUtil().isMock(obj)

в будущем Mockito.isMock() метод может быть добавлен в открытый API, см.:проблема 313: обеспечить isMock за пределами организации.mockito.внутренний).

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

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

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