我试图对局部变量进行局部模拟。然后尝试doReturn(),以便它不调用原始方法。但它确实称之为原始方法。
这是我的doReturn声明
@Spy
ReportFileWriter iReportFileWriter = new ReportFileWriter(Any.stringNotNull(), Any.stringNotNull());
@Mock
Environment environment;
@InjectMocks
IDataSync iDataSync ;
@Test
public void testRunTask() {
doReturn(Any.stringNotNull()).when(iReportFileWriter).writeResult(any(List.class), any(Date.class));
iDataSync.someMethod(readParameters, false);
}
Any
是一个提供虚拟值的自定义类。
Any.listContactRecords()
返回类型为List<ContactRecords>
ContactRecords
是自定义类
result.contactRecords的类型为:
public List<ContactRecord> contactRecords;
和startDateTime是:
public Date startDateTime;
在测试报告文件的代码中,writer是一个 local 变量,定义为
public someMethod(){
ReportFileWriter iReportFileWriter = new ReportFileWriter(environment.getProperty("reports.tempFileDir"), environment.getProperty("reports.fileNameFormater.i")) ;
fullFilename = iReportFileWriter.writeResult(result.contactRecords, taskParameter.startDateTime);
.
.
.
}
但是,应该没有调用writeResult。它既不是最终的,也不是静态的。
我应该能够根据Mockito: Trying to spy on method is calling the original method
获得返回值和
我应该能够根据以下内容监视局部变量: