Mockito:对同一方法的多次调用
2022-09-03 06:39:32
我正在用Mockito模拟一个对象,这个对象上的相同方法被调用多次,我想每次都返回相同的值。
这就是我所拥有的:
LogEntry entry = null; // this is a field
// This method is called once only.
when(mockLogger.createNewLogEntry()).thenAnswer(new Answer<LogEntry>() {
@Override
public LogEntry answer(InvocationOnMock invocationOnMock) throws Throwable {
entry = new LogEntry();
return entry;
}
});
// This method can be called multiple times,
// If called after createNewLogEntry() - should return initialized entry.
// If called before createNewLogEntry() - should return null.
when(mockLogger.getLogEntry()).thenAnswer(new Answer<LogEntry>() {
@Override
public LogEntry answer(InvocationOnMock invocationOnMock) throws Throwable {
return entry;
}
});
问题是,似乎我的getLogEntry方法只被调用一次。对于所有后续调用,将返回,我在测试中获得 NPE。
如何告诉 mockito 对所有调用使用存根版本?null
=================================================================
为子孙后代进行事后分析
我做了一些额外的调查,一如既往,这不是图书馆的错,而是我的错。在我的代码中,在调用之前调用的方法之一。NPE是绝对合法的,测试实际上在我的代码中发现了一个错误,而不是我在Mockito中发现了错误。getLogEntry()
createNewLogEntry()