一尘不染

Mockito thenReturn返回相同的实例

java

我在Mockito中有这个:

when(mockedMergeContext.createNewEntityOfType(IService.class)).thenReturn(new ServiceMock());

createNewEntityOfType方法应始终返回一个新ServiceMock实例,但它会返回两次相同的引用。

为什么该thenReturn方法不返回新值ServiceMock


阅读 340

收藏
2020-12-03

共1个答案

一尘不染

thenReturn方法将始终返回传递给它的内容。该代码new Servicemock()是在调用之前执行的thenReturnServiceMock然后将创建的内容传递给thenReturn。因此thenReturn有一个绝对的实例而ServiceMock不是创建机制。

如果需要提供新实例,请使用thenAnswer

when(mockedMergeContext.createNewEntityOfType(IService.class))
  .thenAnswer(new Answer<IService>() {
     public IService answer(InvocationOnMock invocation) {
        return new ServiceMock();
     }
   });
2020-12-03