Я опробовал mock-maker-inline
функцию "Инкубация" в Mockito, чтобы можно было смоделировать финальный класс (проблема описана и обсуждена здесь ).С тех пор другие тесты терпят неудачу с:
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to when() is not a mock!
Example of correct stubbing:
doThrow(new RuntimeException()).when(mock).someMethod();
, когда я определяю исключение, которое будет выдано шпионом.Соответствующий код из одного из тестов:
В классе @Configuration:
@Bean
public MessagePersister messagePersister() {
return Mockito.spy(new MessagePersister(...));
}
Примечание: MessagePersister проксируется CGLIB.
В классе тестирования:
@Inject
private MessagePersister messagePersisterSpy;
@Test
public void exceptionInPersisterTest() {
doThrow(new SomeException("exceptionFromTest")).doCallRealMethod()
.when(messagePersisterSpy).persistMessages(any());
...
}
Исключение понятно.Класс messagePersisterSpy
равен MessagePersister$$EnhancerBySpringCGLIB$$6c49f1e2
, но если я удалю функцию mock-maker-inline
, мой шпион будет класса MessagePersister$MockitoMock$515952708$$EnhancerBySpringCGLIB$$9523b504
, и тесты будут зеленого цвета.
Любые идеи, откуда возникает это вмешательство, и еслиЯ могу что-нибудь с этим сделать?
Спасибо!