模拟用于集成测试的 Bigquery
2022-09-02 10:50:32
虽然在我的Java集成测试中,其他接口相对容易模拟,但我找不到一种正确的方法来模拟Bigquery。
一种可能性是嘲笑我在Bigquery本身之上写的图层,但我更喜欢以更自然的方式嘲笑Bigquery。我正在寻找一个有限的轻量级实现,它允许定义表内容,并支持使用标准API进行查询。有这样的图书馆吗?如果没有,建议采用哪些替代方法?
虽然在我的Java集成测试中,其他接口相对容易模拟,但我找不到一种正确的方法来模拟Bigquery。
一种可能性是嘲笑我在Bigquery本身之上写的图层,但我更喜欢以更自然的方式嘲笑Bigquery。我正在寻找一个有限的轻量级实现,它允许定义表内容,并支持使用标准API进行查询。有这样的图书馆吗?如果没有,建议采用哪些替代方法?
在单元测试中,模拟所有外部依赖项是完全可以的,只要您使用接口来抽象出对BigQuery客户端的访问,模拟就不应该成为问题。
通过集成测试,我宁愿让我的所有第三方依赖项都经过测试,以扩展应用程序所需的范围。
例如,一种情况是将数据从外部源流式传输到BigQuery的ETL,在这种情况下,集成测试需要验证所有数据是否按预期在BigQuery中,这意味着验证阶段需要考虑重复和嵌套消息。
另一种情况是运行一些业务 SQL 的应用程序,在这种情况下,您将在应用程序运行之前用一些测试数据填充 BigQuery,然后应用程序需要将 SQL 输出发布为视图/新表/或从数据流出以进行验证。
已经有一些库负责与数据存储的集成测试,包括BigQuery / NoSQL / SQL
它们将为上述情况提供简单的解决方案,并完全支持SQL,动态宏/谓词等....
查看更多如何最终用于 ETL 和 BiqQuery 测试
如果数据存储集成测试库不是一个选项,并且您正在寻找的只是测试BigQuery客户端,那么好消息是客户端使用REST,因此使用网络嗅探器,您可以轻松记录来回发送的内容,然后您可以在replayer中使用它。为了将BigQuery从公共BG端点重定向到您的replayer,您将使用http java代理。