使用Mockito,doReturn()调用原始方法

时间:2018-01-07 02:02:09

标签: java junit mockito spy

我试图对局部变量进行局部模拟。然后尝试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

获得返回值

我应该能够根据以下内容监视局部变量:

Using Mockito to mock a local variable of a method

0 个答案:

没有答案