💡
LocalDatastoreHelperを使ってCloud Datastoreを使ったテストをする方法
にいろいろ書いてあるけどLocalDatastoreHelper
を使うとコードだけでもっと簡単に書ける。
LocalDatastoreHelperについて
com.google.cloud:google-cloud-datastore
に入ってるCloud Datastoreのエミュレータを起動してくれるヘルパークラスだがあまりドキュメントに書かれていない。
Cloud Datastore Emulatorに必要なコンポーネントを入れておく
gcloud components install beta cloud-datastore-emulator`
cloud-datastore-emulator
を起動する際にgcloud beta
コマンドが必要になるので合わせて入れる。
(入れておかないとLocalDatastoreHelper
によって裏で起動されるプロセスが自動インストールしようとしてプロンプトで固まってしまう: https://github.com/googleapis/java-datastore/issues/302 )
Cloud Datastore Emulatorへ接続するサンプルコード
import com.google.cloud.datastore.testing.LocalDatastoreHelper;
// エミュレータ起動用クラスの初期化
LocalDatastoreHelper emulator = LocalDatastoreHelper.create();
// エミュレータを開始(裏で`gcloud beta emulators datastore start`が実行される)
emulator.start();
// エミュレータに接続する`DatastoreService`のインスタンスが作れるのでテストコードでgetしたりputしたりする
DatastoreService datastore = emulator.getOptions().getService();
// 使い終わったら裏で起動したエミュレータプロセスを止める
emulator.stop();
Discussion