web-dev-qa-db-ja.com

統合テストのためのBigqueryのモック

他のインターフェースは私のJava統合テストで比較的簡単にモックできますが、Bigqueryをモックする適切な方法を見つけることができませんでした。

1つの可能性は、Bigquery自体の上に作成したレイヤーをモックすることですが、Bigqueryをより自然な方法でモックすることを好みます。テーブルの内容を定義でき、標準APIを使用したクエリをサポートする、限定された軽量の実装を探しています。そのような図書館はありますか?そうでない場合、どのような代替アプローチが推奨されますか?

14
Eyal Schneider

単体テストでは、すべての外部依存関係をモックすることはまったく問題ありません。インターフェイスを使用してBigQueryクライアントへのアクセスを抽象化する限り、モックは問題になりません。

統合テストでは、アプリケーションが必要とする範囲で、サードパーティの依存関係をすべてテストしたいと思います。

たとえば、外部ソースからBigQueryにデータをストリーミングするETLの場合、統合テストでは、すべてのデータが期待どおりにBigQueryにあることを確認する必要があります。つまり、検証段階では、繰り返されるネストされたメッセージを考慮する必要があります。要求に応じ。

別のケースは、いくつかのビジネスSQLを実行するアプリケーションです。この場合、アプリケーションを実行する前にBigQueryにテストデータを入力し、アプリケーションはSQL出力をビュー/新しいテーブルとして公開するか、データからストリームアウトする必要があります。検証用。

BigQuery/NoSQL/SQLを含むデータストアとの統合テストを処理するライブラリがすでにいくつかあります

これらは、上記のケースに対する簡単なソリューションと、SQL、動的マクロ/述語などの完全なサポートを提供します。

  1. Dsunit (go-lang)
  2. JDsunit (Java)
  3. 最終的に (言語に依存しない)

ETLおよびBiqQueryのテストに endly を使用する方法をもっと見る

データストア統合テストライブラリがオプションではなく、BigQueryクライアントのテストのみを探している場合は、クライアントがRESTを使用しているため、ネットワークスニファーを使用して、送受信されている内容を簡単に記録できます。リプレイヤーで使用します。 BigQueryをパブリックBGエンドポイントからリプレーヤーにリダイレクトするには、http Javaプロキシを使用します。

7
Adrian