模拟BigQuery进行集成测试

4

我正在使用https://github.com/googleapis/google-cloud-go与GCP Bigquery进行交互以获取一些数据。

我想为我的代码编写一些测试。对于单元测试来说,很容易,因为我可以模拟我的存储库(数据层)并返回我期望的结果。

我正在寻找编写集成测试的方法,如果只是基本的HTTP,我可以编写一个httptest服务器并返回一些虚假数据。但是这个库正在使用gRPC与GCP Bigquery通信。

我想知道如何在Golang中为GCP Bigquery编写集成测试。

让我们保持最简单的方式,只提供查询数据集中的表并读取数据的集成部分。


还没有对此进行评估或使用,但或许你可以考虑一下这个?https://github.com/goccy/bigquery-emulator - Emile Pels
@EmilePels 如果可能的话,我正在寻找一种不需要向我的项目添加更多依赖项的解决方案。类似于我们通常用于模拟外部数据源的通用httptest模拟。 - Yuseferi
你能更详细地描述一下你的集成测试想要实现的内容吗?你是否在寻找一个虚假的BigQuery端点,以便将你的测试指向该端点? - kingkupps
@kingkupps 感谢您的关注,假设我想查询数据集中的表并从中读取数据。 - Yuseferi
1个回答

4

你可以在本地运行依赖项。阅读: Google BigQuery的Docker容器

您可以编写脚本以在Docker容器中运行测试和依赖项(BigQuery)

如果您不想使用docker运行测试,可以使用bigquery模拟器

或者只需模拟它 将存储库(数据层)作为接口发送到您的HTTP服务器, 然后使用Mock运行测试


谢谢您的回答,我知道前两个选项,能否请您提供一下您建议的第三个选项的详细信息? - Yuseferi
在启动您的 HTTP 服务器时,创建一个模拟仓库层并使用它。 - Vusal Shahbazov
这不是进行集成测试的正确方式,我们期望使用模拟的外部部分而不是模拟存储库层。 - Yuseferi
然后您必须使用前两个选项之一。 - Vusal Shahbazov
我知道那些解决方案,但我正在寻找其他解决方案,我相信还有其他的解决方案,比如 https://pkg.go.dev/github.com/googleapis/google-cloud-go-testing/bigquery/bqiface 等等。顺便说一句,谢谢您的关注。 - Yuseferi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接