如何在DoFn单元测试中使用模拟?

时间:2015-05-14 16:15:44

标签: mockito google-cloud-dataflow

我的DoFn有一些外部依赖项,我想使用Mockito在我的unittest中嘲笑。通常我使用DoFnTester对我的DoFns进行单元测试。

使用DoFnTester时,是否可以验证模拟对象的期望?

1 个答案:

答案 0 :(得分:2)

我提出的解决方案不使用DoFnTester,而是直接调用ProcessElement方法。

这是一个片段:

FileHelper fileHelper = mock(FileHelper.class);
when(fileHelper.createLocalTempDir())
  .thenReturn(new File("/tmp/someTempDIr"));

MyDoFn buildFn = new MyDoFn(fileHelper);
ProcessContext mockContext = mock(ProcessContext.class);
buildFn.processElement(mockContext);

verify(fileHelper).createLocalTempDir();

我遇到尝试使用DoFnTester的问题是DoFnTester序列化和反序列化DoFn。因此,我在测试函数中验证的模拟实例不是processElement函数中使用的模拟实例。