模拟制造商内联使其他模拟不起作用

时间:2019-02-11 15:40:08

标签: java spring junit mockito cglib

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

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类,并且测试为绿色。

任何想法是这种干扰来自何处,如果我能做些什么?

谢谢!

0 个答案:

没有答案