首页 > 解决方案 > mock-maker-inline 使其他模拟不起作用

问题描述

我尝试了mock-maker-inlineMockito 的“孵化”功能,以便能够模拟最终课程(此处描述和讨论的问题)。从那时起,其他测试失败:

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());
...
}

例外是可以理解的。的类messagePersisterSpyMessagePersister$$EnhancerBySpringCGLIB$$6c49f1e2,但如果我删除该mock-maker-inline功能,我的间谍是类MessagePersister$MockitoMock$515952708$$EnhancerBySpringCGLIB$$9523b504的,测试是绿色的。

这种干扰来自哪里的任何想法,如果我能做些什么呢?

谢谢 !

标签: javaspringjunitmockitocglib

解决方案


推荐阅读