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