我在Mockito中有这个:

when(mockedMergeContext.createNewEntityOfType(IService.class)).thenReturn(new ServiceMock());
createNewEntityOfType方法应始终返回一个新的ServiceMock实例,但它返回相同引用的两倍。

为什么thenReturn方法不返回新的ServiceMock

最佳答案

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

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

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

08-26 06:52