Ich versuche eine DoFn<KV<String, twitter4j.Status>, String>
Implementierung zu testen und Testdaten als Eingabe bereitzustellen. Eine Möglichkeit, die ich untersuchte, war die Verwendung eines Objekts Mockito.mock
als Eingabe, da ansonsten eine große Anzahl abstrakter Methoden implementiert werden müssen. Der Aufruf der verspotteten Methoden in meinem DoFn
ändert jedoch das Objekt, so dass das Testframework beschwert, dass "Werte nicht in irgendeiner Weise mutiert werden müssen, nachdem es ausgegeben wurde".Gibt es eine gute Möglichkeit, Mocks als Eingaben für Dataflow-Tests zu verwenden?
Gibt es einen alternativen Weg, um das zu erreichen, was ich hier versuche? Der Testcode ist in etwa:
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(...);
Sehr schön. Vielen Dank! –