模拟 BigQueryIO

Mocking BigQueryIO

我们有一些数据流作业,最终将结果写入 BigQueryIO。

我们想为数据流作业编写单元测试。我们能够为作业中使用的所有 PTransform 和 DoDn 编写单元测试。但是我们必须对管道或工作本身进行单元测试。但是我们不想在单元测试期间在 BigQuery 中写一些东西。

我们如何模拟 BigQueryIO?

我们正在使用以下代码将结果写入 BigQuery。

            .apply(BigQueryIO.Write
                    .to("my_bigquery_table")
                    .withSchema(getSchema())
                    .withWriteDisposition(
                            BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

您可以通过注入 DataflowAssert 转换来代替 BigQueryIO.Write 转换来测试它,如下所示:

DataflowAssert.that(<inputToBQWrite>).<MatchesExpectations>()

https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/testing/DataflowAssert

这将允许您测试管道中的其他转换,但您需要使用此技术模拟 BigQueryIO。