встроенный макет заставляет другие макеты не работать - PullRequest
0 голосов
/ 11 февраля 2019

Я опробовал 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, и тесты будут зеленого цвета.

Любые идеи, откуда возникает это вмешательство, и еслиЯ могу что-нибудь с этим сделать?

Спасибо!

...