我正在尝试测试一个DoFn<KV<String, twitter4j.Status>, String>
实现,并提供测试数据作为输入。我正在探索的一个途径是使用一个Mockito.mock
对象作为输入,因为有大量的抽象方法可以实现。但是,在 my 中调用模拟方法DoFn
会更改对象,因此测试框架会抱怨“输出后不得以任何方式改变值”。
有没有另一种方法来完成我在这里尝试的事情?测试代码大致为:
Status status = mock(Status.class, withSettings().serializable());
when(status.getText()).thenReturn("bar");
Pipeline p = TestPipeline.create();
PCollection<String> strings = p
.apply(Create.of(KV.of("foo", status)))
.apply(MapElements.via(new TwitterUtils.StatusToJsonFn()));
DataflowAssert.thatSingleton(strings).isEqualTo(...);